2016-12-30 7 views
-1

안녕하십니까, 모두 도와주세요. 테이블에 필터를 추가하고 싶습니다. 다음은 코드의 일부입니다. 사실, 테이블에 행을 추가 한 후 행을 사라지게하는 키를 테이프로 붙일 때 필터를 사용하여 검색하려고합니다. 이 필터를 어떻게 작동시킬 수 있습니까? 는jTextfieldKeyReleased를 사용하는 자바 필터

private void filter1(String query)  
{ 
DefaultTableModel model=(DefaultTableModel) addtab.getModel(); 
TableRowSorter<DefaultTableModel> filter1=new TableRowSorter<>(model); 
addtab.setRowSorter(filter1); 
filter1.setRowFilter(RowFilter.regexFilter(query)); 
} 
private void searchKeyReleased(java.awt.event.KeyEvent evt) {         
    String query=search.getText().toLowerCase(); 
filter1(query); 
} 
+0

더 나은 도움을 받으려면 [mcve]를 (를) 빨리 게시하십시오. ''이미지에서 볼 수있는'', 어떤 이미지? – MasterBlaster

+0

Seaut 필드에 KeyEventListener를 등록 했습니까? –

+0

@JochenBedersdorfer 번호. 제발 어떻게 고칠 지 말해 줄래? 나는 자바 초보자입니다 ... –

답변

-1

스윙 자바 문서 팀에 의해 쓰여진 훌륭한 자습서를 가지고 주셔서 감사합니다. 그것은 매우 광범위하고 여기에 모든 KeyListener 구현하는 방법에 대해 설명합니다 (이 컴파일하지 않은

search.addKeyListener(new KeyAdapter() { 
    @Override public void keyReleased(KeyEvent e) { 
     // check if e is actually a character, read up about focus handling 
     searchKeyReleased(e); 
    } 
}); 

같은 것을, 당신의 경우

https://docs.oracle.com/javase/tutorial/uiswing/events/keylistener.html

, 초기화 코드에 추가하지만, 당신은 아이디어를 얻는다)

+0

(1-) KeyListener를 사용하지 마십시오. Swing은 더 새롭고 우수한 API를 사용합니다. 이 경우 텍스트 필드의 변경 내용을 수신하는 것은 'DocumentListener'가됩니다. 예를 들어 backspace가 사용되거나 텍스트가 텍스트 필드에 붙여 넣어 진 것과 같이 제안 된 코드는 작동하지 않습니다. – camickr

+0

사실, DocumentListener를 잊었습니다. 또한 keyPressed로 다시 변경됩니다. –

+0

btw 필터링을 더 필요로합니다. '더 나은'API 문에 동의하지 않습니다.) AWT와 비교하여 추가 API가 있습니다. 스윙 프로그래밍에 대해 배울 경우 AWT 클래스의 영향을받습니다. –

0

작동 예제는 Sorting and Filtering에있는 스윙 튜토리얼의 섹션을 읽으십시오.

기본적으로이 예제에서는 DocumentListener을 사용하여 텍스트 필드의 변경 내용을 수신 한 다음 필터를 적용합니다.