package com.wf;

import javax.swing.*;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreePath;
import java.awt.*; class PaintUserData
{
public static Color _color = Color.BLACK; } class ProjectTree extends JTree implements TreeSelectionListener
{ private JPanel _panel; public ProjectTree(JPanel panel) {
addTreeSelectionListener(this);
_panel = panel;
} @Override
public void valueChanged(TreeSelectionEvent e) {
TreePath path = e.getNewLeadSelectionPath();
DefaultMutableTreeNode node = (DefaultMutableTreeNode)path.getLastPathComponent(); if (node.getUserObject().equals("red"))
{
PaintUserData._color = Color.red; }
else if (node.getUserObject().equals("blue"))
{
PaintUserData._color = Color.blue; }
else if (node.getUserObject().equals("yellow"))
{
PaintUserData._color = Color.yellow;
}
else if (node.getUserObject().equals("violet"))
{
PaintUserData._color = Color.CYAN;
}
else
{
PaintUserData._color = Color.black; }
_panel.repaint();
} } class PaintPanel extends JPanel
{ public PaintPanel() { } @Override
public void paint(Graphics g) {
super.paint(g); g.setColor(PaintUserData._color);
g.drawLine(0, 0, 400, 400); } } class MainWidget extends JComponent
{
private GridBagConstraints _gbScrollPane;
private GridBagConstraints _gbPaintPanel;
private GridBagLayout _layout; private JScrollPane _scrollPane;
private ProjectTree _projectTree;
private PaintPanel _paintPanel;
public MainWidget() {
_gbScrollPane = new GridBagConstraints();
_gbPaintPanel = new GridBagConstraints(); _gbScrollPane.weightx = 0.1;
_gbScrollPane.weighty = 1;
_gbScrollPane.gridx = 0;
_gbScrollPane.gridy = 0;
_gbScrollPane.fill = GridBagConstraints.BOTH; _gbPaintPanel.weightx = 0.9;
_gbPaintPanel.weighty = 0;
_gbPaintPanel.gridx = 1;
_gbPaintPanel.gridy = 0;
_gbPaintPanel.fill = GridBagConstraints.BOTH; _layout = new GridBagLayout();
setLayout(_layout); _scrollPane = new JScrollPane(); _paintPanel = new PaintPanel();
_projectTree = new ProjectTree(_paintPanel); _scrollPane.getViewport().add(_projectTree);
add(_scrollPane, _gbScrollPane); add(_paintPanel, _gbPaintPanel); } }
public class Test01 extends JFrame
{
private MainWidget _mainWidget; public Test01() {
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); _mainWidget = new MainWidget(); getContentPane().add(_mainWidget);
} public static void main(String[] args) throws Exception{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() { Test01 f = new Test01();
f.setSize(1024, 800);
f.setLocationRelativeTo(null);
f.setVisible(true);
}
});
}
}

JTree事件的更多相关文章

  1. JNI详解---从不懂到理解

    转载:https://blog.csdn.net/hui12581/article/details/44832651 Chap1:JNI完全手册... 3 Chap2:JNI-百度百科... 11 C ...

  2. JTree单击事件

    import javax.swing.*; import javax.swing.tree.*; import java.awt.FlowLayout; import java.awt.GridLay ...

  3. JTree使用

    package JTree; import java.awt.Component; import javax.swing.Icon; import javax.swing.JTree; import ...

  4. Swing组件Jtree,JTablePane选项卡运用

    今天开始写技术博客,说实话,本没有什么技术,说是总结也好,说是分享也罢,总之是想自己有意识的做一些事情,作为一名即将毕业的大学生,总是想以最好的状态,去面向社会,今天就是我准备好了的时候,本人将技术博 ...

  5. Jtree(节点的渲染+资源管理器)(2)

    上一次我们建立一个比较简单的资源管理器,这次我们说一下上面的资源管理器的问题,并且得尽量的贴近windows的资源管理器. 这样一个简单的资源管理树就完成了,下面我们说说它的问题: ① 图片和外观和W ...

  6. jtree(选择框)

    jtree一般的用法是: 1. 展示电脑中文件的层次结构,如图所示. 具体的代码: package jtree; import java.io.File; import javax.swing.JTr ...

  7. JAVA GUI学习 - JTree树结构组件学习 ***

    public class JTreeKnow extends JFrame { public JTreeKnow() { this.setBounds(300, 100, 400, 500); thi ...

  8. JTree demo

    JFrame居中方法一:   setLocationRelativeTo(null); 注意:必须在整个frame初始化完成后再加上此语句,否则将显示在屏幕右下角 方法二: private Dimen ...

  9. Java Swing 树状组件JTree的使用方法(转)

    树中特定的节点可以由 TreePath(封装节点及其所有祖先的对象)标识,或由其显示行(其中显示区域中的每一行都显示一个节点)标识.展开 节点是一个非叶节点(由返回 false 的 TreeModel ...

随机推荐

  1. OAUTH协议简介

    OAUTH协议简介 原文来自:http://blog.csdn.net/hereweare2009/article/details/3968582 分类: Open API2009-03-08 12: ...

  2. Android中的dp,px以及wrap_content的实际展示效果

    因为一个效果中的图片设置了wrap_content的属性,但在720dp跟540dp上面显示不一致使老大非常恼火.跟他讲也讲不明白.于是乎让我们彼此测试来探个究竟.首先测试的是个图片: 它的物理像素是 ...

  3. HTTP/1.1与HTTP/1.0的区别

    HTTP/1.1与HTTP/1.0的区别 下面主要从几个不同的方面介绍HTTP/1.0与HTTP/1.1之间的差别,当然,更多的内容是放在解释这种差异背后的机制上. 1 可扩展性 可扩展性的一个重要原 ...

  4. iOS基础 - Quartz 2D绘图的基本步骤

    一.使用Quartz 2D绘图的基本步骤 1) 获取上下文context(绘制图形的地方) 2) 设置路径(路径是用来描述形状的) 3)  将路径添加到上下文 4)  设置上下文属性(设置颜色,线宽, ...

  5. 有关sort函数的用法

    最近碰到这个sort函数,网上查了一些资料,感觉还是直接扔给我代码比较好理解些 要是像我一样的童鞋,建议看这里:http://www.cplusplus.me/265.html 个人认为很好理解..这 ...

  6. C# 求精简用一行代码完成的多项判断 重复赋值

    C# 求精简用一行代码完成的多项判断 重复赋值 哈哈,说实话,个人看着这么长的三元操作也麻烦,但是我也只想到了这样三元判断句中执行方法体能够写到一行,追求的终极目的是,用一行实现这个过程,而且简单,由 ...

  7. 随手复习一下委托:delegate

    先骂个街,天儿太闷了…… 随手复习一下委托,delegate 是一种函数指针,是 .net 提供的一种安全的函数指针,翻译的也很贴切,像是委托人,又像代理人,通过“委托”来执行一些函数而不是直接调用它 ...

  8. 《C++游戏开发》笔记十三 平滑过渡的战争迷雾(一) 原理:Warcraft3地形拼接算法

    本系列文章由七十一雾央编写,转载请注明出处.  http://blog.csdn.net/u011371356/article/details/9611887 作者:七十一雾央 新浪微博:http:/ ...

  9. 字符串拼接 strcat ;数组和指针的区别

    问题:字符串拼接 strcat 方法1: 开辟新空间,存放结果: #include <stdio.h> #include <stdlib.h> #include <str ...

  10. XSD实例

    XSD实例 在前面的XSD笔记中,基本上是以数据类型为主线来写的,而在我的实际开发过程中,是先设计好了XML的结构(元素.属性),并写好了一份示例,然后再反过来写XSD文件(在工具生成的基础上修改), ...