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

📄 companygui.java

📁 Swing Components and Containers Swing Components and Containers
💻 JAVA
字号:
import java.awt.*;

import javax.swing.*;
import javax.swing.tree.*;

import java.util.*;
import javax.swing.event.*;

public class CompanyGUI extends JFrame {

	private Container contentPane; 
	
	private Employee boss;

	private Employee marketVP;

	private Employee prodVP;

	private Employee salesMgr;

	private Employee advMgr;

	private Employee prodMgr;

	private Employee shipMgr;
	
	private DefaultMutableTreeNode tBoss;
	
	private JTree tree;
	
	private JLabel cost;

	public static void main(String[] args) {

		JFrame frame = new CompanyGUI();

		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setSize(300, 400); // Adjust the size of the window
		frame.setVisible(true);
	}

	public CompanyGUI() {
		
		super("company_employee_tree");
		
		buildEmployeeTree();

		tBoss = new DefaultMutableTreeNode("CEO");

		addNodes(tBoss, boss);

		DefaultTreeModel model = new DefaultTreeModel(tBoss);

		tree = new JTree(model);
		tree.addTreeSelectionListener(new TreeLisoner());
		
		//JLabel costLabel = new JLabel("cost:");
		cost = new JLabel();
		
		JPanel panel = new JPanel();
		//panel.add(costLabel);
		panel.add(cost);
		
		Font fon = new Font("Serif", Font.BOLD, 15);
		//costLabel.setFont(fon);
		cost.setFont(fon);
		
		contentPane = getContentPane();		
		contentPane.add(new JScrollPane(tree));
		contentPane.add(panel,BorderLayout.SOUTH);

	}

	private void buildEmployeeTree() {

		boss = new Employee("CEO", 200000);
		boss.add(marketVP = new Employee("Marketing VP", 100000));
		boss.add(prodVP = new Employee("Production VP", 100000));

		marketVP.add(salesMgr = new Employee("Sales Mgr", 50000));
		marketVP.add(advMgr = new Employee("Advt Mgr", 50000));

		//add salesmen reporting to Sales Manager
		for (int i = 0; i < 5; i++) {
			salesMgr.add(new Employee("Sales " + new Integer(i).toString(),
					30000.0F + (float) (Math.random() - 0.5) * 10000));
		}

		advMgr.add(new Employee("Secy", 20000));
		prodVP.add(prodMgr = new Employee("Prod Mgr", 40000));
		prodVP.add(shipMgr = new Employee("Ship Mgr", 35000));

		//add manufacturing staff	
		for (int i = 0; i < 4; i++) {

			prodMgr.add(new Employee("Manuf " + new Integer(i).toString(),
					25000.0F + (float) (Math.random() - 0.5) * 5000));
		}
		//add shipping clerks
		for (int i = 0; i < 3; i++) {

			shipMgr.add(new Employee("ShipClrk " + new Integer(i).toString(),
					20000.0F + (float) (Math.random() - 0.5) * 5000));
		}

	}

	private void addNodes(DefaultMutableTreeNode pnode, Employee emp) {
		DefaultMutableTreeNode node;
		Iterator<Employee> iterator = emp.iterator();
		while (iterator.hasNext()) {
			Employee newEmp = (Employee) iterator.next();
			node = new DefaultMutableTreeNode(newEmp.getName());
			pnode.add(node);
			addNodes(node, newEmp);
		}
	}
	
	public class TreeLisoner implements TreeSelectionListener {
		
		public void valueChanged(TreeSelectionEvent evt) {
			// called when employee is selected in tree llist
			TreePath path = evt.getPath();
			String selectedTerm = path.getLastPathComponent().toString();
			
			// find that employee in the composite			
			Employee emp = boss.getChild(selectedTerm);
			
			// display sum of salaries of subordinates(if any)
			if (emp != null) {
				cost.setText(emp.getName() + ":  cost = " + new Float(emp.getSalaries()).toString());
			}
		}
	}
}

⌨️ 快捷键说明

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