2017-03-15 1 views
0

enter image description hereJTable 셀을 두 번 클릭하여 편집 모드로 전환 한 경우 검색하는 데 필요한 수신기는 무엇입니까? 당신이 스윙에 편집 가능한 JTable의 셀을 더블 클릭, 셀의 종류로 전환 할 때

는 '편집 모드'캐럿은 내부에 나타나고 개요 셀 주위에 나타납니다. 내 질문은이 변경을 편집 모드로 감지하는 데 사용해야하는 리스너는 무엇입니까?

명확하게 말하면, 셀 값이 변경되거나 더블 클릭 수신기가 필요할 때이를 감지하는 리스너를 찾고있는 것이 아니라 편집 가능한 셀을 편집 할 때 발생하는 편집 모드로의 초기 전환 두 번 클릭합니다.

다시 말해이 변경에 대한 청취자는 무엇입니까? 존재합니까, 아니면 다른 청취자를 수정해야합니까?

감사합니다.

답변

2

가장 좋은 방법은 "tableCellEditor"속성을 수신하는 것입니다. 따라서 활성화/비활성화 된 편집기를 쉽게 얻을 수 있습니다.

table.addPropertyChangeListener("tableCellEditor", new PropertyChangeListener() { 
    @Override 
    public void propertyChange(PropertyChangeEvent evt) { 
     if (evt.getNewValue() == null) { 
      // editing stopped 
     } else { 
      // editing started 
     } 
    } 
}; 
+0

완벽합니다. 이것은 내가 달성하기를 원하는 효과입니다. 많은 감사합니다! – Zhiming010

0

테이블 개체에 마우스 수신기를 추가해야합니다. 의 mousePressed() 메서드에서 확인 클릭 수는 2.이 당신은 MouseClick 이벤트를 발생 사용할 일이 얼마나 많은 시간을 클릭 찾을 수 있습니다 우려를

yourTable.addMouseListener(new MouseAdapter() { 
    public void mousePressed(MouseEvent e) { 
     JTable table =(JTable) e.getSource(); 
     Point p = e.getPoint(); 
     int row = table.rowAtPoint(p); 
     if (e.getClickCount() == 2) { 

     } 
    } 
}); 
+0

'경우 (e.getClickCount() == 2) {'대신'의 경우 (me.getClickCount() == 2) {') –

+0

이 어떤 경우에 작동하지만 같은에서 수 때로는 셀을 편집 할 수 있고 때로는 셀을 편집 할 수 없기 때문에 두 번 클릭한다고해서 반드시 편집 모드로 들어간 것을 보장하지는 않습니다. onEditMode 리스너를 사용하는 것이 '청소기'처럼 보이지만, 내가 찾고있는 리스너가 존재하지 않을 수도 있습니다. – Zhiming010

+0

셀 편집자는 편집 방법과 방법을 변경할 수 있으므로 두 번 클릭으로 편집 할 수있는 것은 아닙니다. 즉, Enter 키 또는 한 번의 클릭으로 활성화 될 수 있습니다. – MadProgrammer

0

를 해결해야합니다.

샘플 코드

jtable.addMouseListener(new MouseAdapter() { 
    public void mousePressed(MouseEvent me) { 
     JTable table =(JTable) me.getSource(); 
     if (me.getClickCount() == 2) { 

     int row = target.getSelectedRow(); 
     int column = target.getSelectedColumn(); 

     // add your logic here based on which row and column 
     } 
    } 
}); 

이 도움이 될 수 있습니다. 자세한 내용은 click here

+0

셀 편집자는 편집 방법과 방법을 변경할 수 있기 때문에 두 번 클릭으로 편집 할 수있는 것은 아닙니다. 엔터 키를 누르거나 한 번의 클릭으로 활성화 될 수 있습니다. – MadProgrammer

관련 문제