package test.swing;import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.tree.*;/**
* This program demonstrates tree editing.
*/
public class TreeEditTest {
public static void main(String[] args) {
JFrame frame = new TreeEditFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}/**
* A frame with a tree and buttons to edit the tree.
*/
class TreeEditFrame extends JFrame implements MouseListener {
public TreeEditFrame() {
setTitle("TreeEditTest");
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT); // construct tree TreeNode root = makeSampleTree();
model = new DefaultTreeModel(root);
tree = new JTree(model);
tree.setEditable(true);
tree.addMouseListener(this); // add scroll pane with tree JScrollPane scrollPane = new JScrollPane(tree);
add(scrollPane, BorderLayout.CENTER); makeButtons();
pop = new JPopupMenu();
JMenuItem addChild, deleteNode;
addChild = new JMenuItem("添加"); addChild.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent(); if (selectedNode == null)
return; DefaultMutableTreeNode newNode = new DefaultMutableTreeNode("New");
model.insertNodeInto(newNode, selectedNode, selectedNode.getChildCount()); // now display new node TreeNode[] nodes = model.getPathToRoot(newNode);
TreePath path = new TreePath(nodes);
tree.scrollPathToVisible(path);
}
}); deleteNode = new JMenuItem("删除"); deleteNode.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent(); if (selectedNode != null && selectedNode.getParent() != null)
model.removeNodeFromParent(selectedNode);
}
}); pop.add(addChild);
pop.add(deleteNode);
} public TreeNode makeSampleTree() {
DefaultMutableTreeNode root = new DefaultMutableTreeNode("World");
DefaultMutableTreeNode country = new DefaultMutableTreeNode("USA");
root.add(country);
DefaultMutableTreeNode state = new DefaultMutableTreeNode("California");
country.add(state);
DefaultMutableTreeNode city = new DefaultMutableTreeNode("San Jose");
state.add(city);
city = new DefaultMutableTreeNode("San Diego");
state.add(city);
state = new DefaultMutableTreeNode("Michigan");
country.add(state);
city = new DefaultMutableTreeNode("Ann Arbor");
state.add(city);
country = new DefaultMutableTreeNode("Germany");
root.add(country);
state = new DefaultMutableTreeNode("Schleswig-Holstein");
country.add(state);
city = new DefaultMutableTreeNode("Kiel");
state.add(city);
return root;
} /**
* Makes the buttons to add a sibling, add a child, and delete a node.
*/
public void makeButtons() {
JPanel panel = new JPanel();
JButton addSiblingButton = new JButton("Add Sibling");
addSiblingButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent(); if (selectedNode == null)
return; DefaultMutableTreeNode parent = (DefaultMutableTreeNode) selectedNode.getParent(); if (parent == null)
return; DefaultMutableTreeNode newNode = new DefaultMutableTreeNode("New"); int selectedIndex = parent.getIndex(selectedNode);
model.insertNodeInto(newNode, parent, selectedIndex + 1); // now display new node TreeNode[] nodes = model.getPathToRoot(newNode);
TreePath path = new TreePath(nodes);
tree.scrollPathToVisible(path);
}
});
panel.add(addSiblingButton); JButton addChildButton = new JButton("Add Child");
addChildButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent(); if (selectedNode == null)
return; DefaultMutableTreeNode newNode = new DefaultMutableTreeNode("New");
model.insertNodeInto(newNode, selectedNode, selectedNode.getChildCount()); // now display new node TreeNode[] nodes = model.getPathToRoot(newNode);
TreePath path = new TreePath(nodes);
tree.scrollPathToVisible(path);
}
});
panel.add(addChildButton); JButton deleteButton = new JButton("Delete");
deleteButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent(); if (selectedNode != null && selectedNode.getParent() != null)
model.removeNodeFromParent(selectedNode);
}
});
panel.add(deleteButton);
add(panel, BorderLayout.SOUTH);
} public void mouseClicked(MouseEvent e) {
} public void mouseEntered(MouseEvent e) {
} public void mouseExited(MouseEvent e) {
} public void mousePressed(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON3) { pop.show(this, e.getX(), e.getY() + 20);
}
} public void mouseReleased(MouseEvent e) {
} private JPopupMenu pop; private DefaultTreeModel model; private JTree tree; private static final int DEFAULT_WIDTH = 400; private static final int DEFAULT_HEIGHT = 200;
}
import java.awt.event.*;
import javax.swing.*;
import javax.swing.tree.*;/**
* This program demonstrates tree editing.
*/
public class TreeEditTest {
public static void main(String[] args) {
JFrame frame = new TreeEditFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}/**
* A frame with a tree and buttons to edit the tree.
*/
class TreeEditFrame extends JFrame implements MouseListener {
public TreeEditFrame() {
setTitle("TreeEditTest");
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT); // construct tree TreeNode root = makeSampleTree();
model = new DefaultTreeModel(root);
tree = new JTree(model);
tree.setEditable(true);
tree.addMouseListener(this); // add scroll pane with tree JScrollPane scrollPane = new JScrollPane(tree);
add(scrollPane, BorderLayout.CENTER); makeButtons();
pop = new JPopupMenu();
JMenuItem addChild, deleteNode;
addChild = new JMenuItem("添加"); addChild.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent(); if (selectedNode == null)
return; DefaultMutableTreeNode newNode = new DefaultMutableTreeNode("New");
model.insertNodeInto(newNode, selectedNode, selectedNode.getChildCount()); // now display new node TreeNode[] nodes = model.getPathToRoot(newNode);
TreePath path = new TreePath(nodes);
tree.scrollPathToVisible(path);
}
}); deleteNode = new JMenuItem("删除"); deleteNode.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent(); if (selectedNode != null && selectedNode.getParent() != null)
model.removeNodeFromParent(selectedNode);
}
}); pop.add(addChild);
pop.add(deleteNode);
} public TreeNode makeSampleTree() {
DefaultMutableTreeNode root = new DefaultMutableTreeNode("World");
DefaultMutableTreeNode country = new DefaultMutableTreeNode("USA");
root.add(country);
DefaultMutableTreeNode state = new DefaultMutableTreeNode("California");
country.add(state);
DefaultMutableTreeNode city = new DefaultMutableTreeNode("San Jose");
state.add(city);
city = new DefaultMutableTreeNode("San Diego");
state.add(city);
state = new DefaultMutableTreeNode("Michigan");
country.add(state);
city = new DefaultMutableTreeNode("Ann Arbor");
state.add(city);
country = new DefaultMutableTreeNode("Germany");
root.add(country);
state = new DefaultMutableTreeNode("Schleswig-Holstein");
country.add(state);
city = new DefaultMutableTreeNode("Kiel");
state.add(city);
return root;
} /**
* Makes the buttons to add a sibling, add a child, and delete a node.
*/
public void makeButtons() {
JPanel panel = new JPanel();
JButton addSiblingButton = new JButton("Add Sibling");
addSiblingButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent(); if (selectedNode == null)
return; DefaultMutableTreeNode parent = (DefaultMutableTreeNode) selectedNode.getParent(); if (parent == null)
return; DefaultMutableTreeNode newNode = new DefaultMutableTreeNode("New"); int selectedIndex = parent.getIndex(selectedNode);
model.insertNodeInto(newNode, parent, selectedIndex + 1); // now display new node TreeNode[] nodes = model.getPathToRoot(newNode);
TreePath path = new TreePath(nodes);
tree.scrollPathToVisible(path);
}
});
panel.add(addSiblingButton); JButton addChildButton = new JButton("Add Child");
addChildButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent(); if (selectedNode == null)
return; DefaultMutableTreeNode newNode = new DefaultMutableTreeNode("New");
model.insertNodeInto(newNode, selectedNode, selectedNode.getChildCount()); // now display new node TreeNode[] nodes = model.getPathToRoot(newNode);
TreePath path = new TreePath(nodes);
tree.scrollPathToVisible(path);
}
});
panel.add(addChildButton); JButton deleteButton = new JButton("Delete");
deleteButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent(); if (selectedNode != null && selectedNode.getParent() != null)
model.removeNodeFromParent(selectedNode);
}
});
panel.add(deleteButton);
add(panel, BorderLayout.SOUTH);
} public void mouseClicked(MouseEvent e) {
} public void mouseEntered(MouseEvent e) {
} public void mouseExited(MouseEvent e) {
} public void mousePressed(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON3) { pop.show(this, e.getX(), e.getY() + 20);
}
} public void mouseReleased(MouseEvent e) {
} private JPopupMenu pop; private DefaultTreeModel model; private JTree tree; private static final int DEFAULT_WIDTH = 400; private static final int DEFAULT_HEIGHT = 200;
}
解决方案 »
- 一个网游服务端程序,如何找它的程序入口点?
- red5 0.8集群问题
- CAS 单点登录该怎么玩啊
- 为什么taobao选择php做站
- struts+spring+hibernate中配置tiles。。急。。。。
- java反射问题
- 《精通ejb》中的helloworld运行客户端的问题,实在没有办法了,大家帮帮我好吗?
- 再问String的trim
- ejb可户段中的 ClassName.class什么意思?
- 这两个有什么区别啊<%@include file="/public/head.jsp" %> <jsp:include page="/public/head.j
- jpa与hibernate注解混合使用
- HQL查询多对多
楼主要的不是CS而是BS么?
到网上找个页面实现(就是html+js或者好点的带ajax)然后自己用组合模式改造成动态的即可。
while {大类
while(){
子类
}
}