回答者:sasadoraさんのサンプルプログラムと参考URLを
見ながら、JTreeを使ってプログラムを作っています。
そこで質問なのですが、
1.removeSelectionRow(index)で、削除する要素を指定して、
その後、reload()しても指定した要素は消えていません。
その為、removeAllChildren()で一旦全部消して、再度treeを
作りました。removeSelectionRow()の後、reload()してもダメなのでしょうか?
2.sasadoraさんのサンプルプログラムのTopのフォルダー(青色)を、
参考URLにあるような黄色の開いたり閉じたりした状態を表わすフォルダー
にしたいのですが、どのような設定をすればいいのでしょうか?
宜しくお願い致します。
No.1ベストアンサー
- 回答日時:
1.について
removeSelectionRowは、指定したindexの“選択”を
解除するするメソッドです。
ノードを選択すると反転表示されますよね?それを解除するメソッドです。
ノードを消すには、
MutableTreeNode#remove()
MutableTreeNode#removeFromParent()
DefaultTreeModel#removeNodeFromParent(MutableTreeNode node)
を使うといいと思います。
2.
これは、Look&Feelの設定のことだと思います。
UIManager#setLookAndFeelで設定可能です。
Windows環境ならgetSystemLookAndFeelClassNameで
システムのLook&Feelを取得すればOKです。
サンプルを選択したノードを削除するようにして、
システムのLook&Feelを取得するようにしてみました。
========================================
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.tree.*;
public class TreeTest extends JFrame{
JTree tree = new JTree();
JButton btn = new JButton("remove");
DefaultMutableTreeNode top = null;
DefaultTreeModel model = null;
static {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch(Exception e) {
}
}
public static void main(String[] args){
new TreeTest().show();
}
public TreeTest(){
this.setSize(200, 200);
top = new DefaultMutableTreeNode("Top");
top.add(new DefaultMutableTreeNode("Child1"));
top.add(new DefaultMutableTreeNode("Child2"));
top.add(new DefaultMutableTreeNode("Child3"));
model = new DefaultTreeModel(top);
tree.setModel(model);
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
btn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
TreePath path = tree.getSelectionPath();
if (path != null){
((DefaultMutableTreeNode)path.getLastPathComponent()).removeFromParent();
}
((DefaultTreeModel)tree.getModel()).reload();
}
});
this.getContentPane().add(tree, BorderLayout.CENTER);
this.getContentPane().add(btn, BorderLayout.SOUTH);
}
}
========================================
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
- PHP 掲示板を資料を参考にして開発中ですが、画像がアップされません? 1 2022/11/21 06:44
- Excel(エクセル) Excelで質問です。 詳細(写真) ①黄色の部分を全てプルダウンを設定する。 ②リストはG列 ③リ 1 2023/06/16 21:54
- Excel(エクセル) ワードのマクロについて教えてください。 1 2023/03/11 13:50
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
- Visual Basic(VBA) Excelのマクロコードについて教えてください 1 2022/03/27 12:02
- その他(パソコン・スマホ・電化製品) 送信メールフォルダーの中身が突然なくなった 2 2022/11/13 18:55
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- サーバー メールサーバーについて詳しい方、メールサーバーの管理業務経験のある方、教えてください。 3 2022/11/12 18:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB6.0でのTextboxの高さ変更
-
JPanelの切り替えと再描画
-
javaで文字数制限するには?
-
次のように書いたのですが、ウ...
-
エラーで式の開始が不正ですと...
-
java junit list同士の比較方法
-
Java-Swing TextAreaにスクロー...
-
JDialogを閉じた時の処理
-
キャレットの幅を設定したい。
-
c言語のプログラミングで1から1...
-
JButton-背景の透明化
-
KeyListenerの使い方について
-
Buttonを押すと画像が表示され...
-
コンパイルエラー <identifier...
-
JSPやサーブレットでSystem.out...
-
System.err. printlnとSystem.o...
-
C言語のポインターに関する警告
-
変数を動的に利用するには?
-
1~100までの数字を表示し、か...
-
flush()とclose()について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
java junit list同士の比較方法
-
javaで文字数制限するには?
-
JTableの列ヘッダ
-
TextAreaでの文字の色
-
最後の行に移動するには?
-
【Swing】JPanel クラス外から...
-
4択クイズでのランダム出題の...
-
コンパイルエラー <identifier...
-
JPanelの重ね方/OverlayLayout他
-
JPanelの切り替えと再描画
-
エラーで式の開始が不正ですと...
-
JTable の 列幅を個別に設定す...
-
VB6.0でのTextboxの高さ変更
-
連番をオブジェクト名の最後に...
-
ボタンクリック後パネルを再描...
-
JavaでのSwingを使った簡易電卓...
-
ArrayListの使い方について(初...
-
Buttonを押すと画像が表示され...
-
あるコンボボックスを選択する...
-
KeyListenerの使い方について
おすすめ情報