2015-01-02 3 views
1

데이터베이스 테이블의 행을 표시하기 위해 javax.swing.JTable을 사용하고 있습니다. 나는 두 개의 서로 다른 경우에 서로 다른 두 가지 이벤트가 발생해야합니다JTable 행을 선택하거나 행을 두 번 클릭하여 이벤트를 발생시키는 방법

적어도 행을 선택
  • (적어도 행이나 클릭이 수행).
  • 행을 두 번 클릭하면됩니다.

이미 스택 오버플로에 대한 답변을 찾았지만 만족스러운 결과를 찾지 못했습니다. 아이디어가 있으십니까? 를 선택하면

+1

1 그것에'ListSelectionListener'를 부착하여 ListSelectionModel' 테이블을'사용에 대한 How to Write a Mouse Listener를 참조하십시오; 2- JTable에'MouseListener'를 사용하고 더블 클릭, 아마도 마우스 왼쪽 버튼으로 모니터합니다. 당신이 보았던 솔루션과 그들이 어울리지 않는 이유에 대해 설명 할 수도 있습니다. 그래서 우리는 같은 시간을 피하고 서로의 시간을 낭비하지 않습니다. – MadProgrammer

답변

4

를 사용할 수있는 선택 이벤트를 캡처하는

table.addMouseListener 
     (
     new MouseAdapter() 
     { 
      public void mouseClicked(MouseEvent e) 
      { 
      if (e.getClickCount() == 2) 
      { 
      } 
      if (e.getClickCount() == 1) 
      { 
      } 
      } 
     } 
    ); 
    } 

아래와 같은 마우스 이벤트와 저기 테이블 캡처 이벤트에 마우스 리스너를 추가 할 수 있습니다 적어도 하나의 행 (또는 적어도 하나의 행에 대한 클릭이 수행 됨).

당신은 ListSelectionListener를 통해 JTableListSelectionModel를 사용하여 행 선택에 대한 변경 사항을 모니터링해야합니다. 선택이 사용자에 의해 변경 될 때 마우스 나 키보드를 사용하여 사용자에게 알립니다 선택은

은 자세한 내용

에 대한 How to Write a List Selection Listener를 참조 어떤 이유로 프로그래밍 방식으로 변경할 경우시 행에 두 번 클릭 수행됩니다

이 방법을 사용할 수있는 유일한 방법은 MouseListener입니다. 일반적으로 사용자는 마우스 왼쪽 버튼을 클릭하면 하나의 동작이 수행되고 마우스 오른쪽 버튼이 다른 작업을 수행 할 것으로 기대합니다.

실제로 사용자가 수행중인 작업을 확인하려면 SwingUtilities.isLeftMouseButton 또는 SwingUtilities.isRightMouseButton을 사용하는 것이 좋습니다.

자세한 내용

+0

감사합니다! 당신은 내 문제를 해결했습니다! – insilenzio

+0

다행히 도왔습니다 .... – MadProgrammer

0

당신은 당신이

table.getSelectionModel().addListSelectionListener(...); 
+1

그래서 오른쪽 버튼으로 더블 클릭하면 트리거됩니다. if 문. 키보드로 선택을 변경하면 어떻게됩니까? – MadProgrammer

+0

@MadProgrammer는 키보드로 변경 선택을 모니터링하기 위해 keyListener를 추가해야합니다. – eatSleepCode

+0

아, 아니요, KeyListener가 대답이 아니므로 다른 이유로 키 동작이 발생 할 수 있습니다. – MadProgrammer