TreeCellEditor 設定
スタンプ箱のラベルを編集するのに,オリジナルでは右クリックから「名称変更」を選ぶようになっている。DefaultTreeCellEditor を組み込むと,右クリックを使わなくても,マウスをトリプルクリックするか,マウスクリックを休止をはさんで 2 回行なって 1200 ミリ秒待つと編集が開始されるようになる。これをスタンプ箱に組み込んだ。ついでに,1200 ミリ秒を少し短くした。
client/StampTree.java
public StampTree(TreeModel model) { ・ ・ // TreeCellEditor セット this.setEditable(true); this.setCellEditor(new MyDefaultTreeCellEditor(this, renderer));
ui/MyDefaultTreeCellEditor.java
package open.dolphin.ui; import java.util.EventObject; import javax.swing.DefaultCellEditor; import javax.swing.JTree; import javax.swing.Timer; import javax.swing.tree.DefaultTreeCellEditor; import javax.swing.tree.DefaultTreeCellRenderer; import javax.swing.tree.TreeCellEditor; /** * TreeCellEditor * @author pns */ public class MyDefaultTreeCellEditor extends DefaultTreeCellEditor { public MyDefaultTreeCellEditor(JTree tree, DefaultTreeCellRenderer renderer) { super(tree, renderer); realEditor = this.createTreeCellEditor(); } @Override protected TreeCellEditor createTreeCellEditor() { DefaultTextField textField = new DefaultTextField(BorderFactory.createLineBorder(Color.blue)); textField.setOpaque(true); // これをしないと,編集時のバックグランドが白くならない DefaultCellEditor editor = new DefaultCellEditor(textField) { @Override public boolean shouldSelectCell(EventObject event) { boolean retValue = super.shouldSelectCell(event); return retValue; } }; // One click to edit. editor.setClickCountToStart(1); return editor; } /** * 編集が始まるまでの delay を早くした(デフォルトは 1200 msec) */ @Override protected void startEditingTimer() { if(timer == null) { timer = new Timer(900, this); timer.setRepeats(false); } timer.start(); } }
« ダブルクリックで JToggleButton | トップページ | サーバダウン時の対応 »
「OpenDolphin」カテゴリの記事
- Java 17 への移行(7) - OpenDolphin client の対応 (2023.02.04)
- Java 17 への移行(6) - Hibernate 6 でやらかす(2023.02.03)
- Java 17 への移行(5) - OpenDolphin server の対応(2023.02.02)
- Java 17 への移行(4) - OpenSearch の準備 [ubuntu 編](2023.02.01)
- Java 17 への移行(3) - OpenSearch の準備 [mac 編](2023.01.31)