jtree,隐藏根后添加第一层枝不显示。
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
public class JtreeTest extends JFrame
{
private static int i = 1;
private DefaultMutableTreeNode root;
private DefaultTreeModel treeModel;
private JTree tree;
public JtreeTest()
{
root = new DefaultMutableTreeNode("默认根");
// 利用根节点创建TreeModel
this.treeModel = new DefaultTreeModel(root);
tree = new JTree(treeModel);
// tree.setRootVisible(false); // 设置树的系统根不可见
DefaultMutableTreeNode node0 = new DefaultMutableTreeNode("文件0");
treeModel.insertNodeInto(node0, root, root.getChildCount());
tree.expandRow(0);
JScrollPane treeScrollPane = new JScrollPane(tree);
this.getContentPane().add(treeScrollPane, BorderLayout.SOUTH);
JButton btn = new JButton("增加树枝");
btn.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
String temp = "文件" + i++;
DefaultMutableTreeNode node1 = new DefaultMutableTreeNode(temp);
JtreeTest.this.treeModel.insertNodeInto(node1, root, root.getChildCount());
JtreeTest.this.tree.updateUI();
System.out.println(temp);
}
});
this.getContentPane().add(btn, BorderLayout.NORTH);
this.setTitle("树形菜单");
this.pack();
this.setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args)
{
new JtreeTest();
}
}
未隐藏根如上图,按按钮可以添加枝
但是隐藏根后,默认的文件0都不显示了,按钮后界面没变化,但是输出能看到事件还是执行了
Jtree listener Java SE --------------------编程问答--------------------
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
public class JtreeTest extends JFrame {
private static int i = 1;
private DefaultMutableTreeNode root;
private DefaultTreeModel treeModel;
private JTree tree;
public JtreeTest() {
root = new DefaultMutableTreeNode("默认根");
// 利用根节点创建TreeModel
this.treeModel = new DefaultTreeModel(root);
tree = new JTree(treeModel);
tree.setRootVisible(false); // 设置树的系统根不可见
DefaultMutableTreeNode node0 = new DefaultMutableTreeNode("文件0");
treeModel.insertNodeInto(node0, root, root.getChildCount());
tree.expandRow(0);
JScrollPane treeScrollPane = new JScrollPane(tree);
this.getContentPane().add(treeScrollPane, BorderLayout.SOUTH);
JButton btn = new JButton("增加树枝");
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String temp = "文件" + i++;
DefaultMutableTreeNode node1 = new DefaultMutableTreeNode(temp);
JtreeTest.this.treeModel.insertNodeInto(node1, root, root.getChildCount());
JtreeTest.this.tree.updateUI();
System.out.println(temp);
}
});
this.getContentPane().add(btn, BorderLayout.NORTH);
this.setTitle("树形菜单");
this.pack();
this.setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JtreeTest();
}
}
测试没问题:
--------------------编程问答--------------------
版主,我又去运行到看了,还是出不来,请问下可能会是什么原因引起的呢?
JDK1.7.0.25 会不会是这个引起的?
补充:Java , Java SE