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


