⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 invisiblenodetreeexample.java

📁 tame,扩展了好多SWing组件:JTable
💻 JAVA
字号:
/* (swing1.1)*/package tame.examples;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Component;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 javax.swing.Box;import javax.swing.BoxLayout;import javax.swing.ButtonGroup;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JRadioButton;import javax.swing.JScrollPane;import javax.swing.JTree;import javax.swing.border.TitledBorder;import javax.swing.tree.DefaultTreeCellRenderer;import javax.swing.tree.DefaultTreeModel;import javax.swing.tree.TreePath;import tame.tree.InvisibleNode;import tame.tree.InvisibleTreeModel;/**@author Nobuo Tamemasa@version 1.0 01/12/99*/public class InvisibleNodeTreeExample extends JFrame {  public InvisibleNodeTreeExample() {    super("InvisibleNode TreeExample");    String[] strs = {"swing",     // 0		     "platf",     // 1		     "basic",     // 2		     "metal",     // 3		     "JTree"};    // 4    InvisibleNode[] nodes = new InvisibleNode[strs.length];    for (int i=0;i<strs.length;i++) {      nodes[i] = new InvisibleNode(strs[i]);    }    nodes[0].add(nodes[1]);    nodes[1].add(nodes[2]);    nodes[1].add(nodes[3]);    nodes[0].add(nodes[4]);    nodes[3].setVisible(false);    InvisibleTreeModel ml = new InvisibleTreeModel( nodes[0] );    ml.activateFilter(true);    JTree tree = new JTree( ml );    tree.setCellRenderer(new DefaultTreeCellRenderer() {      public Component getTreeCellRendererComponent(JTree tree,                   Object value, boolean sel, boolean expanded,                   boolean leaf, int row, boolean hasFocus) {        super.getTreeCellRendererComponent(tree, value,                   sel, expanded, leaf, row, hasFocus);        if (! ((InvisibleNode)value).isVisible()) {          setForeground(Color.yellow);        }        return this;      }    });    JScrollPane sp = new JScrollPane(tree);    ModePanel   mp = new ModePanel(ml);    ButtonPanel bp = new ButtonPanel(tree);    Box box_right = new Box(BoxLayout.Y_AXIS);    box_right.add(mp);    box_right.add(bp);    Box box = new Box(BoxLayout.X_AXIS);    box.add(sp);    box.add(Box.createVerticalGlue());    box.add(box_right);    getContentPane().add(box, BorderLayout.CENTER);  }  class ModePanel extends JPanel {    ModePanel(final InvisibleTreeModel model) {      setLayout(new GridLayout(2,1));      setBorder(new TitledBorder("View Mode"));      ButtonGroup group = new ButtonGroup();      JRadioButton b_all  = new JRadioButton("all");      JRadioButton b_hide = new JRadioButton("hide");      add(b_all);      add(b_hide);      group.add(b_all);      group.add(b_hide);      b_all.addActionListener(new ActionListener() {        public void actionPerformed(ActionEvent e) {          if (model.isActivatedFilter()) {            model.activateFilter(false);            model.reload();          }        }      });      b_hide.addActionListener(new ActionListener() {        public void actionPerformed(ActionEvent e) {          if (! model.isActivatedFilter()) {            model.activateFilter(true);            model.reload();          }        }      });      b_hide.setSelected(true);    }  }  class ButtonPanel extends JPanel {    ButtonPanel(final JTree tree) {      setLayout(new GridLayout(2,1));      setBorder(new TitledBorder("Change Node"));      JButton b_visible   = new JButton("Visible");      JButton b_invisible = new JButton("Invisible");      //b_invisible.setForeground(Color.yellow);      add(b_visible);      add(b_invisible);      b_visible.addActionListener(new ActionListener() {        public void actionPerformed(ActionEvent e) {          setNodeVisible(tree, true);        }      });      b_invisible.addActionListener(new ActionListener() {        public void actionPerformed(ActionEvent e) {          setNodeVisible(tree, false);        }      });    }    private void setNodeVisible(final JTree tree, boolean isVisible) {      DefaultTreeModel model = (DefaultTreeModel)tree.getModel();      TreePath[] path = tree.getSelectionPaths();      InvisibleNode node = null;      for (int i=0;i<path.length;i++) {        node = (InvisibleNode)path[i].getLastPathComponent();        if (!(node == model.getRoot())) {          node.setVisible(isVisible);        } else {          System.out.println("refused: root node");        }      }      if (path.length == 1) {        model.nodeChanged(node);      } else {        model.reload();      }    }  }  public static void main(String args[]) {    InvisibleNodeTreeExample frame = new InvisibleNodeTreeExample();    frame.addWindowListener(new WindowAdapter() {      public void windowClosing(WindowEvent e) {System.exit(0);}    });    frame.setSize(300, 180);    frame.setVisible(true);  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -