📄 treeexpansiondemo.java
字号:
import javax.swing.*;import javax.swing.tree.*;import javax.swing.event.*;import java.awt.*;import java.awt.event.*;public class TreeExpansionDemo extends JFrame implements TreeWillExpandListener{ private JTree tree; private JCheckBox jcb; private JTextField jtf; public TreeExpansionDemo() {/* A Collection of DefaultMutableTreeNode objects are created that *//* will form the components of a tree. */ DefaultMutableTreeNode league = new DefaultMutableTreeNode("Soccer League"); DefaultMutableTreeNode north = new DefaultMutableTreeNode("North Division"); DefaultMutableTreeNode south = new DefaultMutableTreeNode("South Divison"); DefaultMutableTreeNode jets = new DefaultMutableTreeNode("Jets"); DefaultMutableTreeNode raiders = new DefaultMutableTreeNode("Raiders"); DefaultMutableTreeNode fins = new DefaultMutableTreeNode("Fins"); DefaultMutableTreeNode shooters = new DefaultMutableTreeNode("Shooters"); DefaultMutableTreeNode lions = new DefaultMutableTreeNode("Lions"); DefaultMutableTreeNode tigers = new DefaultMutableTreeNode("Tigers");/* The node hierarchy is loaded into a DefaultTreeModel object. */ DefaultTreeModel dtm = new DefaultTreeModel(league); dtm.insertNodeInto(north, league, 0); dtm.insertNodeInto(south, league, 1); dtm.insertNodeInto(jets, north, 0); dtm.insertNodeInto(raiders, north, 1); dtm.insertNodeInto(fins, north, 2); dtm.insertNodeInto(shooters, south, 0); dtm.insertNodeInto(lions, south, 1); dtm.insertNodeInto(tigers, south, 2);/* A JTree object is created using the previously created tree model. *//* The JTree registers a TreeWillExpandListener. The *//* TreeExpansionDemo class serves as the TreeWillExpandListener, so *//* the "this" reference is passed to the addTreeWillExpandListener() *//* method. */ tree = new JTree(dtm); tree.setShowsRootHandles(true); tree.addTreeWillExpandListener(this); jcb = new JCheckBox("permission"); jcb.setBorder(BorderFactory.createLineBorder(Color.black)); jcb.setBorderPainted(true); jcb.setPreferredSize(new Dimension(100, 30)); jtf = new JTextField(20); jtf.setEditable(false); JPanel panel = new JPanel(); panel.add(jcb); panel.add(jtf); getContentPane().add( new JScrollPane(tree), BorderLayout.CENTER ); getContentPane().add( panel, BorderLayout.SOUTH ); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 400, 300); setVisible(true); }/* The TreeExpansionDemo class provides implementation of the *//* treeWillExpand() method. The method checks to see if the *//* "permission" checkbox is checked. If it is, the expansion *//* is allowed to proceed. If the checkbox is not checked, an *//* ExpandVetoException is thrown and the expansion is canceled. *//* The treeWillCollapse() method is not used in this example so *//* it is implemented as a stub method. */ public void treeWillExpand(TreeExpansionEvent event) throws ExpandVetoException { if ( jcb.isSelected() ) { TreePath path = event.getPath(); jtf.setText(""+path.getLastPathComponent()+" node expanded"); } else { jtf.setText("permission denied"); throw new ExpandVetoException(event); } } public void treeWillCollapse(TreeExpansionEvent event) throws ExpandVetoException {} public static void main(String args[]) { TreeExpansionDemo demo = new TreeExpansionDemo(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -