java中如何对jtree编程

Java JTree 布局~

第一个是改变一下显示风格。
第二个,应该是你使用了布局。换成null的即可控制。
标记一下,晚上给出代码。

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.beans.*;

public class JTree_main extends JFrame {
static JTree tree = new JTree();

public JTree_main() {
Container contentPane = getContentPane();
JScrollPane scrollPane = new JScrollPane(tree);

contentPane.add(new ControlPanel(), BorderLayout.NORTH);
contentPane.add(scrollPane, BorderLayout.CENTER);

tree.addPropertyChangeListener(new PropertyListener());
}
class ControlPanel extends JPanel {
JCheckBox showRoot = new JCheckBox("show root node");

public ControlPanel() {
showRoot.setSelected(tree.isRootVisible());

setLayout(new FlowLayout());
add(showRoot);

showRoot.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
tree.setRootVisible(showRoot.isSelected());
}
});
}
}
class PropertyListener implements PropertyChangeListener {
public void propertyChange(PropertyChangeEvent e) {
String name = e.getPropertyName();

if(name.equals(JTree.ROOT_VISIBLE_PROPERTY)) {
String msg = "Root Visible Property: " +e.getNewValue().toString();

JOptionPane.showMessageDialog(JTree_main.tree,msg,"Property Change",JOptionPane.INFORMATION_MESSAGE);
}
}
}
public static void main(String args[]) {
JTree_main a=new JTree_main();
a.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
a.setBounds(300,300,450,300);
a.setVisible(true);
}
}

给你一个参考一下

下面的是增加和删除树节点
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.tree.*;
import java.awt.*;
import java.awt.event.*;
public class Test extends JFrame {
JTree tree = new JTree();
DefaultTreeModel model = (DefaultTreeModel)tree.getModel();
TreeSelectionModel selectionModel = tree.getSelectionModel();

JButton removeButton = new JButton("Remove selected node");
JButton addButton = new JButton("Add node");

public Test() {
Container contentPane = getContentPane();

selectionModel.setSelectionMode(
TreeSelectionModel.SINGLE_TREE_SELECTION);

contentPane.add(new ControlPanel(), BorderLayout.NORTH);
contentPane.add(tree, BorderLayout.CENTER);

tree.addTreeSelectionListener(
new TreeSelectionListener() {
public void valueChanged(TreeSelectionEvent e) {
TreePath path = e.getNewLeadSelectionPath();
boolean nodesAreSelected = (path != null);

addButton.setEnabled(nodesAreSelected);
removeButton.setEnabled(nodesAreSelected);
}
});
model.addTreeModelListener(new TreeModelListener() {
public void treeNodesInserted(TreeModelEvent e) {
showInsertionOrRemoval(e, " added to ");
}
public void treeNodesRemoved(TreeModelEvent e) {
showInsertionOrRemoval(e, " removed from ");
}
private void showInsertionOrRemoval(TreeModelEvent e,
String s) {
Object[] parentPath = e.getPath();
int[] indexes = e.getChildIndices();
Object[] children = e.getChildren();
Object parent = parentPath[parentPath.length-1];

JOptionPane.showMessageDialog(Test.this,
"Node \"" + children[0].toString() +
"\"" + s + parent.toString() +
" at index " + indexes[0],
"Node Added or Removed",
JOptionPane.INFORMATION_MESSAGE);
}
public void treeNodesChanged(TreeModelEvent e) {}
public void treeStructureChanged(TreeModelEvent e) {}
});
}
class ControlPanel extends JPanel {
public ControlPanel() {
addButton.setEnabled(false);
removeButton.setEnabled(false);

add(addButton);
add(removeButton);

addButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
TreePath path =
selectionModel.getSelectionPath();

MutableTreeNode parent, node =
(MutableTreeNode)path.getLastPathComponent();

if(path.getPathCount() > 1)
parent = (MutableTreeNode)node.getParent();
else
parent = (MutableTreeNode)node;

int index = parent.getIndex(node) + 1;

String s = JOptionPane.showInputDialog(
Test.this,
"Enter a name for the new node:",
"New Tree Node",
JOptionPane.QUESTION_MESSAGE);

MutableTreeNode newNode =
new DefaultMutableTreeNode(s);

model.insertNodeInto(newNode, parent, index);
}
});
removeButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
TreePath path =
selectionModel.getSelectionPath();

if(path.getPathCount() == 1) {
JOptionPane.showMessageDialog(ControlPanel.this,
"Can't remove root node!");
return;
}

MutableTreeNode node =
(MutableTreeNode)path.getLastPathComponent();

model.removeNodeFromParent(node);
}
});
}
}
public static void main(String args[]) {
GraphicJavaApplication.launch(new Test(),
"Tree Model Example",300,300,450,300);
}
}
class GraphicJavaApplication extends WindowAdapter {
public static void launch(final JFrame f, String title,
final int x, final int y,
final int w, int h) {
f.setTitle(title);
f.setBounds(x,y,w,h);
f.setVisible(true);

f.setDefaultCloseOperation(
WindowConstants.DISPOSE_ON_CLOSE);

f.addWindowListener(new WindowAdapter() {
public void windowClosed(WindowEvent e) {
System.exit(0);
}
});
}
}

package studentms;

import java.awt.*;
import javax.swing.*;
import java.awt.Rectangle;
import javax.swing.tree.DefaultMutableTreeNode;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.HierarchyEvent;
import java.awt.event.HierarchyListener;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;

/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2008</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class Explain
extends JFrame {
JPanel contentPane;
JTextArea tarShow = new JTextArea();
JButton butEnter = new JButton();
JTree jTree1;
JOptionPane jOptionPane1 = new JOptionPane();
JScrollPane jScrollPane1 = new JScrollPane();
public Explain() {
try {
setDefaultCloseOperation(EXIT_ON_CLOSE);
jbInit();
}
catch (Exception exception) {
exception.printStackTrace();
}
}

/**
* Component initialization.
*
* @throws java.lang.Exception
*/
private void jbInit() throws Exception {
contentPane = (JPanel) getContentPane();
contentPane.setLayout(null);
setSize(new Dimension(400, 250));
setTitle("使用说明");
DefaultMutableTreeNode root=new DefaultMutableTreeNode("学生管理系统");
DefaultMutableTreeNode parent1=new DefaultMutableTreeNode("学生管理");
DefaultMutableTreeNode parent2=new DefaultMutableTreeNode("班级管理");
DefaultMutableTreeNode parent3=new DefaultMutableTreeNode("用户管理");
DefaultMutableTreeNode parent4=new DefaultMutableTreeNode("帮助");
DefaultMutableTreeNode child1=new DefaultMutableTreeNode("查询学生信息");
DefaultMutableTreeNode child2=new DefaultMutableTreeNode("添加学生信息");
DefaultMutableTreeNode child3=new DefaultMutableTreeNode("修改学生信息");
DefaultMutableTreeNode child4=new DefaultMutableTreeNode("删除学生信息");
DefaultMutableTreeNode child5=new DefaultMutableTreeNode("查询班能信息");
DefaultMutableTreeNode child6=new DefaultMutableTreeNode("添加班能信息");
DefaultMutableTreeNode child7 = new DefaultMutableTreeNode("删除班能信息");
DefaultMutableTreeNode child8 = new DefaultMutableTreeNode("查询用户信息");
DefaultMutableTreeNode child9 = new DefaultMutableTreeNode("注册用户信息");
DefaultMutableTreeNode child10 = new DefaultMutableTreeNode("修改用户密码");
DefaultMutableTreeNode child11 = new DefaultMutableTreeNode("删除用户信息");
DefaultMutableTreeNode child12 = new DefaultMutableTreeNode("使用说明");
DefaultMutableTreeNode child13 = new DefaultMutableTreeNode("关于本软件");
butEnter.setBounds(new Rectangle(277, 255, 81, 23));
butEnter.setForeground(Color.blue);
butEnter.setText("确定");
butEnter.addActionListener(new Explain_butEnter_actionAdapter(this));
jOptionPane1.setBounds(new Rectangle(0, 0, 262, 90));
jScrollPane1.setBounds(new Rectangle(22, 26, 158, 174));
root.add(parent1);
root.add(parent2);
root.add(parent3);
root.add(parent4);
parent1.add(child1);
parent1.add(child2);
parent1.add(child3);
parent1.add(child4);
parent2.add(child5);
parent2.add(child6);
parent2.add(child7);
parent3.add(child8);
parent3.add(child9);
parent3.add(child10);
parent3.add(child11);
parent4.add(child12);
parent4.add(child13);
jTree1 = new JTree(root);
tarShow.setBounds(new Rectangle(251, 25, 119, 167));
jTree1.addTreeSelectionListener(new Explain_jTree1_treeSelectionAdapter(this));
contentPane.add(butEnter);
contentPane.add(jScrollPane1);
contentPane.add(tarShow);
jScrollPane1.getViewport().add(jTree1);
this.setResizable(false);
}

public void butEnter_actionPerformed(ActionEvent e) {
this.dispose();
}

public void jTree1_valueChanged(TreeSelectionEvent e) {
try{
DefaultMutableTreeNode node=(DefaultMutableTreeNode)jTree1.getLastSelectedPathComponent();
Object in=node.getUserObject();
tarShow.setText("用于" + in.toString());
}catch(NullPointerException as){
return;
}
catch(Exception d){
jOptionPane1.showMessageDialog(this,d);
d.printStackTrace();
}
}

class Explain_butEnter_actionAdapter
implements ActionListener {
private Explain adaptee;
Explain_butEnter_actionAdapter(Explain adaptee) {
this.adaptee = adaptee;
}

public void actionPerformed(ActionEvent e) {
adaptee.butEnter_actionPerformed(e);
}
}
}

class Explain_jTree1_treeSelectionAdapter
implements TreeSelectionListener {
private Explain adaptee;
Explain_jTree1_treeSelectionAdapter(Explain adaptee) {
this.adaptee = adaptee;
}

public void valueChanged(TreeSelectionEvent e) {
adaptee.jTree1_valueChanged(e);
}
}

package llt.swing10;

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Enumeration;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTree;
import javax.swing.UIManager;
import javax.swing.border.EmptyBorder;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;

public class TreeTraversalMethods extends JFrame {

/**
*
*/
private static final long serialVersionUID = 5383028129537224585L;
private JPanel contentPane;
private JTree tree;
// 创建没有父节点和子节点的树节点,该树节点允许有子节点。
private DefaultMutableTreeNode root;
private JTextArea textArea;

/**
* Launch the application.
*/
public static void main(String[] args) {
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
} catch (Throwable e) {
e.printStackTrace();
}
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
TreeTraversalMethods frame = new TreeTraversalMethods();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

/**
* Create the frame.
*/
public TreeTraversalMethods() {
addWindowListener(new WindowAdapter() {
@Override
public void windowActivated(WindowEvent e) {
do_this_windowActivated(e);
}
});
setTitle("力天教育树的遍历方式");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);

JPanel panel = new JPanel();
contentPane.add(panel, BorderLayout.CENTER);
panel.setLayout(new BorderLayout(0, 0));

JPanel buttonPanel = new JPanel();
panel.add(buttonPanel, BorderLayout.SOUTH);

JButton breadthFirstButton = new JButton("广度优先遍历");
breadthFirstButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
do_breadthFirstButton_actionPerformed(e);
}
});
breadthFirstButton.setFont(new Font("微软雅黑", Font.PLAIN, 16));
buttonPanel.add(breadthFirstButton);

JButton depthFirstButton = new JButton("深度优先遍历");
depthFirstButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
do_depthFirstButton_actionPerformed(e);
}
});
depthFirstButton.setFont(new Font("微软雅黑", Font.PLAIN, 16));
buttonPanel.add(depthFirstButton);

JPanel contentPanel = new JPanel();
panel.add(contentPanel, BorderLayout.CENTER);
contentPanel.setLayout(new GridLayout(1, 2, 5, 5));

JScrollPane scrollPane1 = new JScrollPane();
contentPanel.add(scrollPane1);

tree = new JTree();
tree.setFont(new Font("微软雅黑", Font.PLAIN, 16));
scrollPane1.setViewportView(tree);

JScrollPane scrollPane2 = new JScrollPane();
contentPanel.add(scrollPane2);

textArea = new JTextArea();
textArea.setFont(new Font("微软雅黑", Font.PLAIN, 16));
////围绕视口添加一个边界。
scrollPane2.setViewportView(textArea);
}

protected void do_this_windowActivated(WindowEvent e) {
root = new DefaultMutableTreeNode("根节点");
DefaultMutableTreeNode parent1 = new DefaultMutableTreeNode("父节点1");
parent1.add(new DefaultMutableTreeNode("子节点1"));
parent1.add(new DefaultMutableTreeNode("子节点2"));
root.add(parent1);
DefaultMutableTreeNode parent2 = new DefaultMutableTreeNode("父节点2");
parent2.add(new DefaultMutableTreeNode("子节点3"));
parent2.add(new DefaultMutableTreeNode("子节点4"));
root.add(parent2);
DefaultTreeModel model = new DefaultTreeModel(root);
tree.setModel(model);
}

@SuppressWarnings("unchecked")
protected void do_breadthFirstButton_actionPerformed(ActionEvent e) {
//Enumeration接口的对象,它生成一系列元素,一次生成一个
//breadthFirstEnumeration创建并返回一个枚举,该枚举按广度优先的顺序遍历以此节点为根的子树。
Enumeration enums = root.breadthFirstEnumeration();
getNodesInfor(enums);
}

@SuppressWarnings("unchecked")
protected void do_depthFirstButton_actionPerformed(ActionEvent e) {
Enumeration enums = root.depthFirstEnumeration();
getNodesInfor(enums);
}

@SuppressWarnings("unchecked")
private void getNodesInfor(Enumeration enums) {
textArea.setText("");
//构造一个不带任何字符的字符串生成器,其初始容量为 16 个字符。
StringBuilder sb = new StringBuilder();
//enums.hasMoreElements()测试此枚举是否包含更多的元素
while (enums.hasMoreElements()) {
// 追加到此序列
//enums.nextElement()如果此枚举对象至少还有一个可提供的元素,则返回此枚举的下一个元素
sb.append((DefaultMutableTreeNode) enums.nextElement());
sb.append("\n");
}
//sb.toString()返回此序列中数据的字符串表示形式
textArea.setText(sb.toString());
}
}
株洲科技IT教育:刘力天

java怎样把一个现有文件夹的结构创建成一个JTree
答:import javax.swing.tree.TreeNode;import javax.swing.Icon;import javax.swing.JSplitPane;import javax.swing.JTree;import javax.swing.JLabel;import javax.swing.SwingUtilities;import java.awt.event.MouseAdapter;import ...

求java 刷新 JScrollPane中jtree树状图的方法
答:java 中actionPerformed的方法可以刷新jtree树状图的,具体做法是在actionPerformed的方法尾部加上JSPcrollPanel.updateUI();代码如下:import javax.swing.JFrame;import javax.swing.JTree;import javax.swing.event.TreeSelection...

jtree设置字体颜色
答:还提供编辑器Editor来改变 编辑时的效果 当然了需要写一个自己的渲染器和编辑器,然后设置给组件才可以实现 JTree的渲染器 可以自定义一个MyNodeRenderer继承自DefaultTreeCellRenderer 来实现 简单的参考代码如下 mport java....

java中Tree怎么给子结点设置监听
答:给叶节点设置监听的Java程序如下:package Tree.java;import java.awt.Container;import javax.swing.JFrame;import javax.swing.JScrollPane;import javax.swing.JTree;import javax.swing.event.TreeSelectionEvent;import javax....

java界面编程实现展开树
答:使用JTree 给你个例子import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.util.*;public class TreeDemo1{ public TreeDemo1(){ JFrame f=new JFrame("TreeDemo1");Container contentPane...

可以给我几个JTree的例子吗
答:import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.tree.*;public class TreeEditTest { public static void main(String[] args) { JFrame frame = new TreeEditFrame();frame....

怎样用程序来修改jTree中的某个节点的名字
答:jTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);return jTree;} JTree jTree1 = getJTreePath();JButton jButton1 = new JButton();} 对我有用[0]丢个板砖[0]引用 | 举报...

谁能详细介绍一下java swing里的JTable JTree是怎样用的以及他们的方法...
答:swing.pending包包含了没有完全实现的Swing组件。swing.table包中主要包括了表格组建(JTable)的支持类。swing.tree同样是JTree的支持类。swing.text、swing.text.html、swing.text.html.parser和swing.text.rtf都是用于显示...

java JTtble问题
答:把你的类名JTree改掉,他和swing中的JTree重名了。tree=new JTree(root); // 这个JTree是你自建的类,不是swing中的JTree

java程序员注意了,如何能让Jtree的子节点响应双击事件!!!
答:public void mousePressed(MouseEvent e) { JTree tree = (JTree) e.getSource();int selRow = tree.getRowForLocation(e.getX(), e.getY());TreePath selPath = tree.getPathForLocation(e.getX(), e.getY())...

IT评价网,数码产品家用电器电子设备等点评来自于网友使用感受交流,不对其内容作任何保证

联系反馈
Copyright© IT评价网