Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

JTreeとDefaultCellEditorの利用における編集の完了のタイミング

Swing初心者です。

今、DefaultCellEditorを使用してツリー(JTree)の項目をダブルクリック
すると、テキストエディタが起動するようなツリーを作っています。

プログラム:
 JTree tree = new JTree(root);
 tree.setEditable(true);
 DefaultCellEditor editor = 
     new DefaultCellEditor(new JTextField(10));
 tree.setCellEditor(editor);

起動するテキストフィールドの内容を編集することで、ツリー項目の名前を
変更することができると思うのですが、
その編集の途中で違うコンポーネントをクリックしてしまうと、変更が反映
されません。
他のコンポーネント(もしくは、ツリーの他の項目)をクリックしたら、変
更が反映されるようにするにはどうしたらよいのでしょうか?

4

回答

6118

閲覧

4件の回答

評価

0

CellEditorListenerを使う。
そのインターフェースのeditingStoppedを使えば出来るはず。

評価

0

あああさん回答有難うございます。

すみません、もうすこし具体的に教えていただきたいです。
JTextField textP = new JTextField();
DefaultCellEditor editor = new DefaultCellEditor(textP);                    
editor.addCellEditorListener(new CellEditorListener(){
  public void editingStopped(ChangeEvent e){
  }
    public void editingCanceled(ChangeEvent e){
    }
});
上のようにして、editingStoppedの中にはどういったことを
書けば良いのでしょうか?

よろしくお願いします。

評価

0

先に言っておくけどヒントは教えるけど答えは教えないよ。
自分で考えることに意味があるし力がつくしね。
※まぁ人それぞれ教え方は違うと思うのであくまでも私はね。

で、ChangeEventにはgetSourceイベントオブジェクトが
取得出来るので適切な型にキャストしてやる。
あとはイベントオブジェクトに変更値が入っているので
それを取り出してやることで変更値が取得できる。

評価

0

あとSwing初心者とかはやめよう。
初心者かどうかは関係ないことだし。

public void editingStopped(ChangeEvent e){
    DefaultCellEditor editor = (DefaultCellEditor)e.getSource();
    Object value = editor.getCellEditorValue();
    ・
    ・
    ・
}

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。