2010-12-09 5 views

답변

6

는 JTable의에 SelectionListener를 사용합니다. 이 같은

JTable table = new JTable(); 
JButton button = new JButton(); 
button.setEnabled(false); 

ListSelectionModel listSelectionModel = table.getSelectionModel(); 
listSelectionModel.addListSelectionListener(new ListSelectionListener() { 
     public void valueChanged(ListSelectionEvent e) { 
      ListSelectionModel lsm = (ListSelectionModel)e.getSource(); 
      button.setEnabled(!lsm.isSelectionEmpty()); 
}); 
+1

더 나은 아직 if/else 및 그냥 button.setEnabled (! lsm.isSelectionEmpty()); –

+0

@ Jason - 좋은 지적. 끝난. – justkt

0

선택 리스너를 테이블에 추가하십시오. 선택이 발생하면 버튼을 활성화하십시오. 기본적으로 버튼을 사용하지 않도록 설정하십시오.

http://download.oracle.com/javase/6/docs/api/javax/swing/JTable.html

+0

링크 API – jzd

+0

자네 말이 맞아의 이전 버전 인 것이, 나는 그것을 변경했습니다. –

3

뭔가 작동합니다 :

table.getSelectionModel().addListSelectionListener(new ListSelectionListener() 
{ 
    @Override 
    public void valueChanged(ListSelectionEvent e) 
    { 
     if (!e.getValueIsAdjusting()) 
     { 
      boolean rowsAreSelected = table.getSelectedRowCount() > 0; 
      button.setEnabled(rowsAreSelected); 
     } 
    } 
}); 
+0

ListSelectionEvent가 실행되지 않았습니까? 그게 사실이라면 나는 매우 놀랄 것이다. – Uhlen

+0

나는 코드를 잘못 읽었다. 내 잘못이야. – justkt

관련 문제