swing低级应用之tree
来源:互联网 发布:最小文章cms 编辑:程序博客网 时间:2024/06/04 18:05
我不多说,直接上代码
package com.birdy.pms.ui;import java.util.Vector;public class Book {private String name;private String type;private long storeNumber;private Book parent;private Vector<Book> childs;public Book(){}public Book(String name,String type,long storeNumber){this.name = name;this.type = type;this.storeNumber = storeNumber;parent = null;childs = new Vector<Book>();}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getType() {return type;}public void setType(String type) {this.type = type;}public long getStoreNumber() {return storeNumber;}public void setStoreNumber(long storeNumber) {this.storeNumber = storeNumber;}public Vector<Book> getChilds() {return childs;}public void setChilds(Vector<Book> childs) {for(int i=0;i<childs.size();i++){childs.get(i).setParent(this);}this.childs = childs;}public Book getParent() {return parent;}public void setParent(Book parent) {this.parent = parent;}public Book getChildAt(int index){return childs.get(index);}public int getIndexOfBook(Book book){return childs.indexOf(book);}public long getTotalStoreNumber(){long total = 0;if(getParent()!=null && (getChilds().size()==0)){return getStoreNumber();}if(getChilds().size()>0){for(int i=0;i<getChilds().size();i++){if(getChildAt(i).getStoreNumber()>0){total = total + getChildAt(i).getStoreNumber();}else if(getChildAt(i).getChilds().size()>0){for(int j=0;j<getChildAt(i).getChilds().size();j++){total = total + getChildAt(i).getChildAt(j).getStoreNumber();}}}}return total;}}
package com.birdy.pms.ui;import java.util.ArrayList;import java.util.List;import java.util.Vector;import javax.swing.JLabel;import javax.swing.event.TreeModelEvent;import javax.swing.event.TreeModelListener;import javax.swing.tree.TreeModel;import javax.swing.tree.TreePath;import com.birdy.pms.sample.Person;public class DemoTreeModel implements TreeModel{private boolean showAncestors;private List<Book> list = new ArrayList<Book>();private Book bookRoot;private Vector<TreeModelListener> treeModelListeners = new Vector<TreeModelListener>();public DemoTreeModel(){}public DemoTreeModel(List list){this.list = list;}public DemoTreeModel(Book bookRoot){showAncestors = false;this.bookRoot = bookRoot;} public void showAncestor(boolean b, Object newRoot) { showAncestors = b; Book oldRoot = (Book) newRoot; if (newRoot != null) { bookRoot = (Book)newRoot; } fireTreeStructureChanged(oldRoot); }protected void fireTreeStructureChanged(Book oldRoot) { int len = treeModelListeners.size(); TreeModelEvent e = new TreeModelEvent(this, new Object[] {oldRoot}); for (TreeModelListener tml : treeModelListeners) { tml.treeStructureChanged(e); } }@Overridepublic void addTreeModelListener(TreeModelListener l) {// TODO Auto-generated method stubtreeModelListeners.addElement(l);}@Overridepublic Object getChild(Object parent, int index) {// TODO Auto-generated method stubBook book = (Book) parent;return book.getChildAt(index);}@Overridepublic int getChildCount(Object parent) {// TODO Auto-generated method stubBook book = (Book) parent;return book.getChilds().size();}@Overridepublic int getIndexOfChild(Object parent, Object child) {// TODO Auto-generated method stubBook book = (Book) parent;return book.getIndexOfBook((Book) child);}@Overridepublic Object getRoot() {// TODO Auto-generated method stubreturn bookRoot;}@Overridepublic boolean isLeaf(Object node) {// TODO Auto-generated method stubBook book = (Book) node;return false;}@Overridepublic void removeTreeModelListener(TreeModelListener l) {// TODO Auto-generated method stub}@Overridepublic void valueForPathChanged(TreePath path, Object newValue) {// TODO Auto-generated method stub}}
package com.birdy.pms.ui;import java.awt.Component;import javax.swing.JLabel;import javax.swing.JTree;import javax.swing.tree.DefaultTreeCellRenderer;public class DemoTreeRenderer extends DefaultTreeCellRenderer{@Overridepublic Component getTreeCellRendererComponent(JTree tree, Object value,boolean sel, boolean expanded, boolean leaf, int row,boolean hasFocus) {// TODO Auto-generated method stubsuper.getTreeCellRendererComponent(tree, value, sel, expanded, leaf,row, hasFocus);Book book = (Book) value;return new JLabel(book.getName());}}
package com.birdy.pms.ui;import java.awt.BorderLayout;import java.awt.Container;import java.awt.Dimension;import java.util.ArrayList;import java.util.List;import java.util.Vector;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTabbedPane;import javax.swing.JTextField;import javax.swing.JTree;import javax.swing.event.TreeModelListener;import javax.swing.event.TreeSelectionEvent;import javax.swing.event.TreeSelectionListener;import javax.swing.tree.DefaultTreeCellRenderer;import javax.swing.tree.TreeModel;import javax.swing.tree.TreePath;import com.birdy.pms.sample.GenealogyExample;public class TreeDemo {private JFrame frame;private JTree tree;private List<Book> list = new ArrayList<Book>();private Book root;//private JLabel l1;private JTextField tf2;public TreeDemo(){init();}private void init(){root = new Book("所有文献类型","",0);Book catalog1 = new Book("A 马列主义、毛泽东思想、邓小平理论","aaaa",0);Vector<Book> v1 = new Vector<Book>();v1.add(new Book("A1 马克思、恩格斯著作","aaaa",10));v1.add(new Book("A2 列宁著作","aaaa",20));v1.add(new Book("A4 毛泽东著作","aaaaa",30));catalog1.setChilds(v1);Book catalog2 = new Book("B 哲学、宗教","bbbb",0);Vector<Book> v2 = new Vector<Book>();v2.add(new Book("B0 哲学理论","bb",10));v2.add(new Book("B1 世界哲学","bbbbbbb",20));v2.add(new Book("B2 中国哲学 ","bbb",30));catalog2.setChilds(v2);Book catalog3 = new Book("C 社会科学总论","ccc",0);Vector<Book> v3 = new Vector<Book>();v3.add(new Book("C0 社会科学理论与方法论","cc",50));v3.add(new Book("C1 社会科学现状及发展","ccccccc",60));v3.add(new Book("C2 团体、会议、社会科学机构","c",70));catalog3.setChilds(v3);Vector<Book> vRoot = new Vector<Book>();vRoot.add(catalog1);vRoot.add(catalog2);vRoot.add(catalog3);root.setChilds(vRoot);}public void createAndShowUI(){JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container contentPane = frame.getContentPane(); contentPane.setLayout(new BorderLayout()); //Create and set up the content pane. tree = new JTree(new DemoTreeModel(root)); tree.setCellRenderer(new DemoTreeRenderer()); tree.addTreeSelectionListener(new TreeSelectionListener(){@Overridepublic void valueChanged(TreeSelectionEvent e) {// TODO Auto-generated method stubBook b = (Book) e.getPath().getLastPathComponent();System.out.println(b.getName());l1.setText(b.getType());tf2.setText("馆藏数量: " + b.getTotalStoreNumber()+"");}}); JTabbedPane tabbedPane = new JTabbedPane(); l1 = new JLabel(); JPanel p1 = new JPanel(); p1.add(l1); tabbedPane.addTab("简介", p1); tf2 = new JTextField(); JPanel p2 = new JPanel(); p2.add(tf2); tabbedPane.addTab("各年份馆藏数量", p2); JPanel p3 = new JPanel(); tabbedPane.addTab("馆藏数量占比参考", p3); contentPane.add(tree,BorderLayout.WEST); contentPane.add(tabbedPane,BorderLayout.CENTER); //Display the window. frame.setPreferredSize(new Dimension(600,300)); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true);}public static void main(String[] args) {TreeDemo demo = new TreeDemo();demo.createAndShowUI();}}
- swing低级应用之tree
- 高级Swing组之菜单应用
- swing应用
- android 之低级错误
- 低级定时器之QBasicTimer
- 开发J2ME低级联网应用
- 开发J2ME低级联网应用
- 开发J2ME低级联网应用
- swing的tree
- swing checkbox tree
- java swing tree 方式
- Tree数据源媒介的低级错误
- 学习Swing组件对话框时犯的低级错误
- SilkTest武林外史之4-测试JFC Swing应用
- 别了j2me-->系统原理之低级api 与低级事件
- 精通java swing開發樹(Tree)
- SWING 的应用
- 基于Swing应用程序设计
- hdu 4496 并查集
- Android SpannableStringBuilder设置颜色的问题
- Java数据类型
- Windows命令大全(转)
- getRequestDispatcher()与sendRedirect()的区别
- swing低级应用之tree
- \r与\n
- performSelector:withObject:afterDelay: 精要概览(持续更新)
- Poj 3468 A Simple Problem with Integers - 线段树
- Java垃圾回收策略
- 交叉编译bash 4.2
- java 小技巧
- Android Wifi
- ACM暑期集训总结与感想