永发信息网

jtree 怎么做复杂的node

答案:1  悬赏:60  手机版
解决时间 2021-03-17 04:06
  • 提问者网友:夢醒日落
  • 2021-03-16 19:57
jtree 怎么做复杂的node
最佳答案
  • 五星知识达人网友:污到你湿
  • 2021-03-16 20:16
以下是一个关于JTree构建模型的例子,代码贴出来如下:

package day18_JTree;

import java.awt. * ;
import java.awt.event. * ;
import javax.swing. * ;
import javax.swing.tree. * ;

class TreeEditFrame extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L ;
private DefaultTreeModel model;
private JTree tree;
private JButton addSiblingButton;
private JButton addChildButton;
private JButton deleteButton;

public TreeEditFrame() {
setTitle( " TreeEditTest " );
setSize( 300 , 200 );
this .pack();
this .setSize( 500 , 200 );
Toolkit tool = Toolkit.getDefaultToolkit();
double width = tool.getScreenSize().getWidth();
double height = tool.getScreenSize().getHeight();
this .setLocation((( int )(width - this .getWidth())) / 2 ,( int )(height - this .getHeight()) / 2 );
this .setVisible( true );
this .setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
TreeNode root = makeSampleTree();
model = new DefaultTreeModel(root);
tree = new JTree(model);
DefaultTreeCellRenderer renderer = new DefaultTreeCellRenderer();
renderer.setLeafIcon( new ImageIcon( " 1.gif " ));
renderer.setClosedIcon( new ImageIcon( " 2.gif " ));
renderer.setOpenIcon( new ImageIcon( " 3.gif " ));
// renderer.setBackgroundNonSelectionColor(Color.BLUE);
// renderer.setBackgroundSelectionColor(Color.RED);
renderer.setBorderSelectionColor(Color.RED);
tree.setCellRenderer(renderer);
Container contentPane = getContentPane();
JScrollPane scrollPane = new JScrollPane(tree);
contentPane.add(scrollPane, " Center " );
JPanel panel = new JPanel();
addSiblingButton = new JButton( " Add Sibling " );
addSiblingButton.addActionListener( this );
panel.add(addSiblingButton);
addChildButton = new JButton( " Add Child " );
addChildButton.addActionListener( this );
panel.add(addChildButton);
deleteButton = new JButton( " Delete " );
deleteButton.addActionListener( this );
panel.add(deleteButton);
contentPane.add(panel, " South " );
}

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( " Cupertino " );
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;
}
public void actionPerformed(ActionEvent event) {
DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree
.getLastSelectedPathComponent();
if (selectedNode == null )
return ;
if (event.getSource().equals(deleteButton)) {
if (selectedNode.getParent() != null )
model.removeNodeFromParent(selectedNode);
return ;
}
DefaultMutableTreeNode newNode = new DefaultMutableTreeNode( " New " );
if (event.getSource().equals(addSiblingButton)) {
DefaultMutableTreeNode parent = (DefaultMutableTreeNode) selectedNode
.getParent();

if (parent != null ) {
int selectedIndex = parent.getIndex(selectedNode);
model.insertNodeInto(newNode, parent, selectedIndex + 1 );
}
} else if (event.getSource().equals(addChildButton)) {
model.insertNodeInto(newNode, selectedNode, selectedNode
.getChildCount());
}
TreeNode[] nodes = model.getPathToRoot(newNode);
TreePath path = new TreePath(nodes);
tree.scrollPathToVisible(path);
}
}
public class TreeEditTest {
public static void main(String[] args) {
JFrame frame = new TreeEditFrame();
frame.show();
}
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯