5

編集可能なノードを持つJTreeがあります。

プログラムでツリーセル編集イベントをトリガーするにはどうすればよいですか。つまり、ユーザーが手動で強調表示してF2キーを押したかのように、強調表示されたノードの代わりにノード名変更テキストボックスを表示します。

基本的に、「名前の変更」メニュー項目またはツールバーボタンを追加して、ツリーの特定の機能をユーザーに知らせ、ユーザーがノードを強調表示したときにF2キーを押したときと同じように機能させたいと考えています。

4

2 に答える 2

4

1)あるノードが(Mouse/KeyBoardイベントによって)選択され、によってリッスンすることによって TreeSelectionListener、選択されたパスは一意のIDを持ちます

2)に追加Swing ActionしますJMenuItemJPopup???で、質問から明確ではありません、/ to ???からノードを取得する方法)

3)クラスを作成し、無効にし、何でも実行します

SwingUtilities.invokeLater(new Runnable() {  
    public void run() {  
        tree.startEditingAtPath(path);  
    }  
});

4)別のフォーラムでの@Michael Dunn私の質問への 回答に基づく

于 2013-01-06T20:35:26.017 に答える
1

このチュートリアルを参照してください

ツリーのノードのテキストを編集可能にするには、ツリーでsetEditable(true)を呼び出します。ユーザーがノードの編集を終了すると、モデルはツリーモデルイベントを生成し、JTreeを含むすべてのリスナーにツリーノードが変更されたことを通知します。DefaultMutableTreeNodeにはノードのコンテンツを変更するためのメソッドがありますが、変更はDefaultTreeModelカバーメソッドを介して行われる必要があることに注意してください。そうしないと、ツリーモデルイベントが生成されず、ツリーなどのリスナーは更新について認識しません。

編集:

ノードのコンテキストメニューを追加するには、次の質問を参照してください。Java JTreeのコンテキストメニューを右クリックしますか?

于 2013-01-06T19:13:19.113 に答える