編集可能なノードを持つJTreeがあります。
プログラムでツリーセル編集イベントをトリガーするにはどうすればよいですか。つまり、ユーザーが手動で強調表示してF2キーを押したかのように、強調表示されたノードの代わりにノード名変更テキストボックスを表示します。
基本的に、「名前の変更」メニュー項目またはツールバーボタンを追加して、ツリーの特定の機能をユーザーに知らせ、ユーザーがノードを強調表示したときにF2キーを押したときと同じように機能させたいと考えています。
1)あるノードが(Mouse
/KeyBoard
イベントによって)選択され、によってリッスンすることによって TreeSelectionListener
、選択されたパスは一意のIDを持ちます
2)に追加Swing Action
しますJMenuItem
(JPopup
???で、質問から明確ではありません、/ to ???からノードを取得する方法)
3)クラスを作成し、無効にし、何でも実行します
SwingUtilities.invokeLater(new Runnable() {
public void run() {
tree.startEditingAtPath(path);
}
});
4)別のフォーラムでの@Michael Dunn
私の質問への 回答に基づく
ツリーのノードのテキストを編集可能にするには、ツリーでsetEditable(true)を呼び出します。ユーザーがノードの編集を終了すると、モデルはツリーモデルイベントを生成し、JTreeを含むすべてのリスナーにツリーノードが変更されたことを通知します。DefaultMutableTreeNodeにはノードのコンテンツを変更するためのメソッドがありますが、変更はDefaultTreeModelカバーメソッドを介して行われる必要があることに注意してください。そうしないと、ツリーモデルイベントが生成されず、ツリーなどのリスナーは更新について認識しません。
編集:
ノードのコンテキストメニューを追加するには、次の質問を参照してください。Java JTreeのコンテキストメニューを右クリックしますか?。