2013-06-24 2 views
0

Focus를 얻으면 테이블이있는 패널이 표시되고 Focus를 잃으면 보이지 않게되는 텍스트 필드가 있습니다.텍스트 필드 초점을 잃었을 때 클릭하면 얻게 됨 JTable

필드를 입력하면 데이터베이스가 나란히 검색되어 테이블에 결과가 표시됩니다.

테이블을 클릭하여 행을 선택하면 텍스트 필드가 포커스를 잃은 다음 즉시 다시 얻고 행을 선택할 수 없습니다 (행 선택 - 셀 편집 - 비활성, 선택 모드 - 단일 선택)

코드 초점 & 때 텍스트 필드의 이익을 위해 그리고 패배 입력 할 때 :보기

private void productBrandTextFieldFocusGained(java.awt.event.FocusEvent evt) {             
    brandSearchPanel.setVisible(true); 
    displayBrands(); 
} 

private void productBrandTextFieldFocusLost(java.awt.event.FocusEvent evt) {             
    brandSearchPanel.setVisible(false); 
} 

private void productBrandTextFieldKeyReleased(java.awt.event.KeyEvent evt) {             
    searchBrand();       
} 

이미지를 어떤 초점을 얻은 경우, 분실 또는 타자 또한 http://sdrv.ms/14TEq2T

@, I w 발생 ould는 DOWN 키를 사용하여 행을 통과 할 수 있습니다. Down 키를 누르면 텍스트 필드에서 포커스가 사라지고 행이 선택되고 UP 또는 DOWN 키를 누르면 행이 위 또는 아래로 이동한다는 코드를 제안하십시오.

답변

1

FocusEvent에는 논리에서 사용할 수있는 getOppositeComponent() 메서드가 있습니다.

텍스트 필드에 포커스가 없으면이 메서드가 호출됩니다. 초점을 얻는 구성 요소가 테이블 인 경우 테이블 패널을 보이지 않게 만들지 않습니다. 그런 다음 사용자가 테이블을 클릭하면 포커스가 그대로 유지됩니다.

텍스트 필드에서 위/아래 화살표 키를 처리하려면 Key Bindings을 사용해야합니다. 테이블에서 현재 선택 항목을 가져온 액션을 작성한 다음 누른 키에 따라 +/- 1까지 선택 항목을 변경합니다. 자세한 내용은 How to Use Key Bindings에있는 스윙 튜토리얼을 읽어보십시오.

+0

개인 무효 productBrandTextFieldFocusLost (java.awt.event.FocusEvent에의 EVT) { 경우 (evt.getOppositeComponent() javax.swing.JTable를 instanceof는) { 한다} else { brandSearchPanel.setVisible (FALSE); } } – HMH

+0

이것이 효과적입니다. 도움을 주셔서 감사합니다 @ camickr – HMH