JTable
デフォルトのコンポーネントで編集可能なものに元に戻す(およびやり直す)機能を実装しようとしています。にJTable
は、 と呼ばれるそのプロパティを指定する追加のクラスがありますSpecifiedJTable
。
そのために、セルがダブルクリックされた瞬間 (つまり、セルが選択され、編集するようにマークされた瞬間) を取得して、セル内の情報とその座標をスタックにプッシュしたいと考えました。
これはMouseListener
...少なくともそれが私の考えでした。SpecifiedJTable
私はこれを試しました(私のクラスのコンストラクターに立って)
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");
}
}
});
}
}
しかし、どういうわけか、clickCounter は 1 より大きい値に達したくありません。
どんな答えや助けもうれしいです。ありがとう。