显示隐藏JTree节点
生活随笔
收集整理的這篇文章主要介紹了
显示隐藏JTree节点
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Enumeration;import javax.swing.JCheckBox; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTree; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel;class FilteredTree {private class PlainBelliedSneech {public String toString() {return "Plain Bellied Sneech";}}private class StarBelliedSneech {public String toString() {return "Star Bellied Sneech";}}private class FilteredTreeModel extends DefaultTreeModel {private boolean mShowStarBelliedSneeches = true;private DefaultMutableTreeNode mRoot;FilteredTreeModel(DefaultMutableTreeNode root) {super(root);mRoot = root;}public Object getChild(Object parent, int index) {DefaultMutableTreeNode node = (DefaultMutableTreeNode) parent;if (mShowStarBelliedSneeches)return node.getChildAt(index);int pos = 0;for (int i = 0, cnt = 0; i < node.getChildCount(); i++) {if (((DefaultMutableTreeNode) node.getChildAt(i)).getUserObject() instanceof PlainBelliedSneech) {if (cnt++ == index) {pos = i;break;}}}return node.getChildAt(pos);}public int getChildCount(Object parent) {DefaultMutableTreeNode node = (DefaultMutableTreeNode) parent;if (mShowStarBelliedSneeches)return node.getChildCount();int childCount = 0;Enumeration children = node.children();while (children.hasMoreElements()) {if (((DefaultMutableTreeNode) children.nextElement()).getUserObject() instanceof PlainBelliedSneech)childCount++;}return childCount;}public boolean getShowStarBelliedSneeches() {return mShowStarBelliedSneeches;}public void setShowStarBelliedSneeches(boolean showStarBelliedSneeches) {if (showStarBelliedSneeches != mShowStarBelliedSneeches) {mShowStarBelliedSneeches = showStarBelliedSneeches;Object[] path = { mRoot };int[] childIndices = new int[root.getChildCount()];Object[] children = new Object[root.getChildCount()];for (int i = 0; i < root.getChildCount(); i++) {childIndices[i] = i;children[i] = root.getChildAt(i);}fireTreeStructureChanged(this, path, childIndices, children);}}}private FilteredTree() {final DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");DefaultMutableTreeNode parent;DefaultMutableTreeNode child;for (int i = 0; i < 2; i++) {parent = new DefaultMutableTreeNode(new PlainBelliedSneech());root.add(parent);for (int j = 0; j < 2; j++) {child = new DefaultMutableTreeNode(new StarBelliedSneech());parent.add(child);for (int k = 0; k < 2; k++)child.add(new DefaultMutableTreeNode(new PlainBelliedSneech()));}for (int j = 0; j < 2; j++)parent.add(new DefaultMutableTreeNode(new PlainBelliedSneech()));parent = new DefaultMutableTreeNode(new StarBelliedSneech());root.add(parent);for (int j = 0; j < 2; j++) {child = new DefaultMutableTreeNode(new PlainBelliedSneech());parent.add(child);for (int k = 0; k < 2; k++)child.add(new DefaultMutableTreeNode(new StarBelliedSneech()));}for (int j = 0; j < 2; j++)parent.add(new DefaultMutableTreeNode(new StarBelliedSneech()));}final FilteredTreeModel model = new FilteredTreeModel(root);JTree tree = new JTree(model);tree.setShowsRootHandles(true);tree.putClientProperty("JTree.lineStyle", "Angled");tree.setRootVisible(false);JScrollPane sp = new JScrollPane(tree);sp.setPreferredSize(new Dimension(200, 400));final JCheckBox check = new JCheckBox("Show Star Bellied Sneeches");check.setSelected(model.getShowStarBelliedSneeches());check.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {model.setShowStarBelliedSneeches(check.isSelected());}});JPanel panel = new JPanel(new BorderLayout());panel.add(check, BorderLayout.NORTH);panel.add(sp, BorderLayout.CENTER);JOptionPane.showOptionDialog(null, panel, "Sneeches on Beeches", JOptionPane.DEFAULT_OPTION,JOptionPane.PLAIN_MESSAGE, null, new String[0], null);System.exit(0);}public static void main(String[] argv) {new FilteredTree();} }
轉(zhuǎn)載于:https://my.oschina.net/fbliujia/blog/73515
總結(jié)
以上是生活随笔為你收集整理的显示隐藏JTree节点的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 启动第三方程序的代码(利
- 下一篇: 七夕,好好珍惜