기본 구성 요소로 편집 가능한 JTable
에 대해 실행 취소 (및 다시 실행) 기능을 구현하려고합니다. JTable
에는 SpecifiedJTable
이라는 속성을 지정하는 데 필요한 추가 클래스가 있습니다.JTable이 Doubleclicks를 청취하지 않습니다
셀을 두 번 클릭 (즉, 셀을 선택/편집하도록 표시된 순간)하여 셀의 정보와 스택의 좌표를 스택으로 가져 오는 순간을 잡아 내고 싶었습니다.
이것은 최소한 MouseListener
...에 의해 완료되어야합니다. 나는이
class JTableSpecified extends JTable {
private static final long serialVersionUID = 1L;
private int c; // the currently selected column
private int r; // the currently selected row
public JTableSpecified(String[][] obj, String[] columnNames) {
super(obj, columnNames); // constructs the real table
// makes that you can only select one row at a time
this.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
// makes that columns are not squeezed
this.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
// forbids to rearrange the columns
getTableHeader().setReorderingAllowed(false);
// adds action listener
this.getModel().addTableModelListener(new TableModelListener() {
public void tableChanged(TableModelEvent e) {
r = getSelectedRow();
c = getSelectedColumn();
// get the String at row r and column c
String s = (String) getValueAt(r, c);
if (jobDisplayed) jobSwitch(c, s);
else resSwitch(c, s);
}
});
this.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
System.out.println("test");
}
}
});
}
}
(내 SpecifiedJTable
클래스의 생성자 서) 그러나 어떻게 든 clickCounter가 나던 내가 어떤 대답에 대해 기쁘게 생각과 이상 1
그거 ... 아무것도에 도달하려는 시도 도움. 감사.
, 그 작동합니다. 나는 내 자신의 코드에서 그런 것을 사용한다. 테이블에 등록 된 다른 마우스 리스너가 일부 마우스 이벤트를 소비하여 리스너에게 전달되지 못하게 할 수 있습니다. – Enwired
코드를 수정할 수 있습니까? 방법대로 그것은 컴파일되지 않을 것입니다. 또한 귀하의 답변 덕분에 더 많은 관련 코드를 선호하십시오. [SSCCE] (http://sscce.org/) – Boro
. 이제 확장 된 코드가 문제가됩니다. @ user1442870 당신이 이것을 더 중요하게 생각할 수 있겠습니까? 마우스 이벤트를 소비하는 다른 리스너를 "중지"시키는 것을 염두에두고 있습니까? 적어도 tablemodelListener는 문제가 아닙니다. 난 그것을 비활성화하고 mouseListener 결국 반응하지 않았다. – user1466944