粗略应用setBoeder,JTree

package GUITask1;

/**
 * setBorder方法测试
 * 
 * TitleBorder类测试
 */
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.border.TitledBorder;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreePath;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter.DEFAULT;

public class Task1 extends JFrame {

	Task1Panel taskPanel = new Task1Panel();

	// 构造方法
	public Task1() {

		// 添加
		this.add(taskPanel);
		// 属性
		this.setTitle("树测试");
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setBounds(500, 250, 400, 300);
		this.setVisible(true);
	}

	public static void main(String args[]) {
		new Task1();
	}
}

class Task1Panel extends JPanel implements TreeSelectionListener {

	// 决定选什么颜色的画笔
	private int paintColor = 0;

	// 实现了Border接口
	TitledBorder titleBorder = null;

	// 定义滚动条
	JScrollPane jsp1 = null;

	// 定义节点
	DefaultMutableTreeNode rootNode1 = null;
	DefaultMutableTreeNode childNode1_1 = null;
	DefaultMutableTreeNode childNode1_2 = null;
	DefaultMutableTreeNode childNode1_1_1 = null;
	DefaultMutableTreeNode childNode1_2_1 = null;

	// 定义树
	JTree tree1 = null;

	// 构造方法
	public Task1Panel() {
		// 获得面板方法
		getTask1Panel();
	}

	public JPanel getTask1Panel() {
		// 初始化
		titleBorder = new TitledBorder(null, "我是一个边框",
				TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.TOP, new Font(
						"sansserif", Font.BOLD, 12), new Color(59, 59, 59));
		rootNode1 = new DefaultMutableTreeNode("背景设置");
		childNode1_1 = new DefaultMutableTreeNode("主题1");
		childNode1_1_1 = new DefaultMutableTreeNode("红色");
		childNode1_2 = new DefaultMutableTreeNode("主题2");
		childNode1_2_1 = new DefaultMutableTreeNode("蓝色");

		jsp1 = new JScrollPane();
		jsp1.setBounds(0, 20, 100, 300);

		// 添加
		childNode1_1.add(childNode1_1_1);
		childNode1_2.add(childNode1_2_1);
		rootNode1.add(childNode1_1);
		rootNode1.add(childNode1_2);
		tree1 = new JTree(rootNode1);
		// 设置监听
		tree1.addTreeSelectionListener(this);

		jsp1.add(tree1);
		this.add(jsp1);

		// 创建一个列标题视口(如果有必要),设置其视图然后将此列标题视口添加到滚动窗格
		jsp1.setColumnHeaderView(tree1);
		// 设置边框
		this.setBorder(titleBorder);
		// 属性
		this.setLayout(null);

		return this;
	}

	//
	public int getPaintColor() {
		return paintColor;
	}

	@Override
	public void paint(Graphics g) {
		super.paint(g);

		switch (paintColor) {

		case 0:

			break;
		case 1:
			g.setColor(Color.red);
			break;
		case 2:
			g.setColor(Color.blue);
			break;
		}
		g.fillRect(100, 0, 300, 300);

	}

	@Override
	public void valueChanged(TreeSelectionEvent e) {
		if (!tree1.isSelectionEmpty()) {
			// 对第一个树
			TreePath selectionPaths1 = tree1.getSelectionPath();
			Object path1 = selectionPaths1.getLastPathComponent();
			DefaultMutableTreeNode node1 = (DefaultMutableTreeNode) path1;
			String userObject1 = (String) node1.getUserObject();

			if (userObject1.equals("红色")) {
				// 切换面板背景1
				paintColor = 1;
				this.repaint();

			} else if (userObject1.equals("蓝色")) {
				// 切换面板背景2
				paintColor = 2;
				this.repaint();
			}
		}
	}
}

你可能感兴趣的:(JTree,setBorder,设置列菜单,JavaSE,GUI)