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」カテゴリの記事
- 運用17年目のまとめ(2025.02.03)
- IME on/off の切換 - その2(2024.12.02)
- OrcaController オルコン(2024.11.28)
- OpenDolphin: java 21 / wildfly 34 への移行(2024.11.08)
- IME on/off の切り替え(2024.09.03)