JTableのセルカーソルの位置(その2)
2019.04.24 (水) 22:59
ugnag
JTableのセルカーソルの位置の取得だが、
一応、いろいろと試してみた結果、なんとかなったのではないかと思うので、報告してみる。
基本的には、JTable#changeSelectionメソッドをオーバーライドするしかないようだ。
個人的な方針として、JTableをオーバーライドしたくはないのだが、
他に方法が無さそうなのでしかたない。
このメソッドは、JTableの行又は列の選択に変化があるときには、
必ず呼び出される。
そのため、このメソッドをオーバーライドし、もともとの処理の終了後にイベントという形で、通知するのがいいかと思う。
イベントとなると、インターフェースやらイベントオブジェクトやらを作らなければならないが、
今回は、既に実装されているPropertyChangeListenerを使ってしまうことにした。
つまり、JTableのセルカーソルの位置が変わった際には、
PropertyChangeListenerに対しイベントを発生させる。
その際のプロパティ名は、"cell_cursor_position_changed"とでもしよう。
PropertyChangeListenerならリスナーの追加や削除、イベントの発火などの機能は実装されているので楽だ。
また、どうせJTableをカスタマイズするなら、セルカーソルの位置を取得するメソッドも実装してしまった方が便利だ。
public JTableEx extends JTable
{
static public String Prop_CellCursorChanged = "cell_cursor_position_changed";
@override
public Point getCellCursorPosition(){
int r = getSelectionModel().getLeadSelectionIndex();
int c = getTableHeader().getColumnModel().getSelectionModel().getLeadSelectionIndex();
return new Point(c, r);
}
@Override
public void changeSelection(int rowIndex, int columnIndex, boolean toggle, boolean extend) {
[7] beginning... [9] >>
[1] comments (0)
-
[0] [top]