作JTable細胞の編集が可能になりませんをダブルクリック
-
13-09-2019 - |
質問
私は追加しようとしているカラムを JTable
以下の行動について同様のインタラクティブなプロトタイExplorerと同様の貝殻):
- することにより、セルをクリックして削除を一度に選択できます。
- することにより、セルダブルクリックし、アクション(起動外部プログラム。)
- 細胞の値(文字列)で編集することにより、シングルクリックする第二の時間(き)またはを押す F2 さらに、この無細胞が強調されている。
ダブルクリックすけ ない トリガーを編集細胞のように残その他のデフォルトの編集をトリガーの運用が可能です。
またの追加 MouseListener
テーブルに、すべての消費 MouseEvent
s,われていないわけではありませんの作業場に戻したい true
から isCellEditable()
そんなリスナーで受けをクリックしイベントが戻って false
その F2 なくなります。
実現するだけでイベントリスナーにディスパッチ?私はあまり好きではないのですが堂のPLAF機能することができたの動きが出始めている。
解決
あなたはあなた自身のcellEditorをとを確認する必要がありますovveride
public boolean isCellEditable( EventObject e )
あなたはEVENTOBJECTには、clickCountでシングル、ダブルクリックを区別することができます。
あなたが真を返すことができ、そのシングルクリックして、その選択したセルには、そうでない場合はfalseを返す場合、
と行と列を取り出します
int row = ( (JTable) e.getSource() ).rowAtPoint(e.getPoint());
int column = ( (JTable) e.getSource() ).columnAtPoint(e.getPoint());
あなたが追加することができますF2を有効にするには、カスタムのInputMap専用のActionMapエントリ
similar too
table.getInputMap().put(KeyStroke.getKeyStroke("DOWN"), "doMyArrowDown");
table.getTable().getActionMap().put("doMyArrowDown", new ArrowDownAction());
とあなたの行動からあなたが自分自身をcellediting発射できる。
table.editCellAt(row, column );
他のヒント
DefaultCellEditorは、編集のためにマウスクリックを制御するsetClickCountToStart()メソッドを有します。デフォルトは2ですが、これはF2の機能には影響を与えません変更されます。
そのため、あなたはトリプルクリックする編集を設定することができます。
編集を開始するために、2回のシングルクリックを処理するために正確にどのようにわからないが、私はあなたが最初のクリックを追跡するためにタイマーを使用した後、第2回のクリックがあなたの時間内であれば編集を行うだろうと思います。
していることをすっぽり包むことにより、既存の CellEditor
と Proxy
と遮断電話 isCellEditable
, はfalseを返してすべてのマウスイベントや委託その他の呼び出し元の CellEditor
.
これは少し複雑なものよりcamickrソリューションが全編集してくれてありがとうございます4)。