如何做出一个复杂的JTree模型?

系统 1512 0

以下是一个关于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();
    }

}


截图:
如何做出一个复杂的JTree模型?

如何做出一个复杂的JTree模型?


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论