树组件首先要new一个JTree,再加结点,然后添加到 JScrollPane

JTree tree1=new JTree();
//.......添加节点
add(new ScrollPane(tree1)

添加节点

DefaultMutableTreeNode root=new DefaultMutableTreeNode("dongxi")//后面的是备注
DefaultMutableTreeNode root=new DefaultMutableTreeNode(new Good("aa",11));//还可以作为叶子new 对象

添加监视器(由树来添加

addTreeSelectionListener(TreeSelectionListener listener)

TreeSelectionListener接口的方法

public void valueChanged(TreeSelectionEvent e)

在上面的接口方法中,返回树的结点,再返回结点中的对象

DefaultMutableTreeNode node1=(DefaultMutableTreeNode)tree.getLastSelectedPathComponent();//只有树Tree才能用的方法
if(node.isLeaf())//判断是否叶子节点
Obeject a=(Obeject)node.getUserObject()//返回叶子里面的对象

完整的测试代码

public class test{

    public static void main(String args[]){
MyWin window1=new MyWin();
window1.setBounds(12,12,400,300);
}
} class MyWin extends JFrame implements TreeSelectionListener{
JTextField text1;
JButton button1,button2;
JTextArea textArea1,textArea2;
JLabel label1;
JTree tree1;
MyWin(){
init();
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void init(){
DefaultMutableTreeNode root=new DefaultMutableTreeNode("Goods");
DefaultMutableTreeNode nodeTV=new DefaultMutableTreeNode("TV");
DefaultMutableTreeNode nodePhone=new DefaultMutableTreeNode("phone");
DefaultMutableTreeNode tv1=new DefaultMutableTreeNode(new Goods("huangTV",11));
DefaultMutableTreeNode tv2=new DefaultMutableTreeNode(new Goods("yuTV",21));
DefaultMutableTreeNode phone1=new DefaultMutableTreeNode(new Goods("ga",31));
DefaultMutableTreeNode phone2=new DefaultMutableTreeNode(new Goods("bing",11));
root.add(nodeTV);
root.add(nodePhone);
nodeTV.add(tv1);
nodeTV.add(tv2);
nodePhone.add(phone1);
nodePhone.add(phone2);
tree1=new JTree(root);
tree1.addTreeSelectionListener(this);
setLayout(new GridLayout(1,2));
add(new JScrollPane(tree1));
textArea2=new JTextArea(15,15);
add(new JScrollPane(textArea2));
}
public void valueChanged(TreeSelectionEvent e){
DefaultMutableTreeNode a=(DefaultMutableTreeNode)tree1.getLastSelectedPathComponent();
if(a.isLeaf()){//是叶子节点?
Goods b=(Goods)a.getUserObject();
textArea2.append(b.name+": "+b.price+"\n");
}
else
textArea2.setText(null);
}
} class Goods{
String name;
double price;
Goods(String name,double price){
this.name=name;
this.price=price;
}
}

表格组件

Jtable默认的构造方法有7个,这里说常用的3个

JTable()
JTable(int a,int b)//几行几列
JTable(Object data[][],Object columnName[])//data为数据数组,columnName为列名数组

如果表格data[][]是 数字类型,可以用 Double.parseDouble 或者Integer.parseInt(s);

调用repaint来刷新表格

计算成绩代码测试

class MyWin extends JFrame implements ActionListener{
JTable table1;
JButton button1;
Object a[][];
Object name[]={"姓名","英语成绩","数学成绩","总成绩"};
MyWin(){
init();
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void init(){
a=new Object[8][4];
for(int i=0;i<8;i++){
for(int j=0;j<4;j++){
if(j!=0)
a[i][j]=0;
else
a[i][j]="姓名";
}
}
button1=new JButton("click");
table1=new JTable(a,name);
Container con1=this.getContentPane();//获得一个容器,不用add
getContentPane().add(new JScrollPane(table1), BorderLayout.CENTER);
con1.add(new JLabel("update the data and click the button"),BorderLayout.NORTH);
con1.add(button1,BorderLayout.SOUTH);
button1.addActionListener(this);
// validate();//验证组件 }
public void actionPerformed(ActionEvent e) {
double sum=0;
boolean boo=true;
for(int i=0;i<8;i++){
sum=0;
for(int j=1;j<3;j++){
try{sum+=Double.parseDouble(a[i][j].toString());
}
catch(Exception ee){
boo=false;
table1.repaint();
}
}
if(boo==true){
a[i][3]=sum+"";//把他改为String
table1.repaint();
} }
} }

GUI树组件,表格的更多相关文章

  1. vuejs学习--递归组件(树型表格分享)

    前言 学习vue有一段时间了,最近使用vue做了一套后台管理系统,其中使用最多就是递归组件,也因为自己对官方文档的不熟悉使得自己踩了不少坑,今天写出来和大家一起分享. 递归组件 组件在它的模板内可以递 ...

  2. Tree( 树) 组件[1]

    本节课重点了解 EasyUI 中 Tree(树)组件的使用方法, 这个组件依赖于 Draggable(拖动)和 Droppable(放置)组件. 一. 加载方式//class 加载方式<ul c ...

  3. 第二百二十六节,jQuery EasyUI,Tree(树)组件

    jQuery EasyUI,Tree(树)组件 本节课重点了解 EasyUI 中 Tree(树)组件的使用方法,这个组件依赖于 Draggable(拖 动)和 Droppable(放置)组件. 一.加 ...

  4. SPA项目开发之动态树+数据表格+分页

    SPA项目开发之动态树+数据表格+分页 动态生成NavMenu导航菜单(只支持2级菜单) <el-menu key="" index=""> < ...

  5. fsLayuiPlugin树+数据表格使用

    fsLayuiPlugin 是一个基于layui的快速开发插件,支持数据表格增删改查操作,提供通用的组件,通过配置html实现数据请求,减少前端js重复开发的工作. GitHub下载 码云下载 测试环 ...

  6. 『动善时』JMeter基础 — 32、JMeter察看结果树组件详解

    目录 1.察看结果树介绍 2.察看结果树界面详解 3.察看结果树的其他功能 (1)将数据写入文件中 (2)Search功能 (3)Scroll automatically选项 4.总结 1.察看结果树 ...

  7. jquery-treegrid树状表格的使用(.Net平台)

    上一篇介绍了DataTable,这一篇在DT的基础之上再使用jquery的一款插件:treegrid,官网地址:http://maxazan.github.io/jquery-treegrid/ 一. ...

  8. 基于HTML5树组件延迟加载技术实现

    HT for Web的HTML5树组件有延迟加载的功能,这个功能对于那些需要从服务器读取具有层级依赖关系数据时非常有用,需要获取数据的时候再向服务器发起请求,这样可减轻服务器压力,同时也减少了浏览器的 ...

  9. HT for Web的HTML5树组件延迟加载技术实现

    HT for Web的HTML5树组件有延迟加载的功能,这个功能对于那些需要从服务器读取具有层级依赖关系数据时非常有用,需要获取数据的时候再向服务器发起请求,这样可减轻服务器压力,同时也减少了浏览器的 ...

随机推荐

  1. 完整的struts.xml文件骨架

    完整的struts.xml文件骨架可以直接拿来用,修改一下就可以啦. <?xml version="1.0" encoding="UTF-8"?> ...

  2. 转:OWASP发布Web应用程序的十大安全风险

    Open Web Application Security Project(OWASP)是世界范围内的非盈利组织,关注于提高软件的安全性.它们的使命是使应用软件更加安全,使企业和组织能够对应用安全风险 ...

  3. RR 和RC隔离问题

    Sesssion 1: mysql> select @@tx_isolation; +-----------------+ | @@tx_isolation | +--------------- ...

  4. 【转】(DT系列六)devicetree中数据和 struct device有什么关系

    原文网址:http://www.cnblogs.com/biglucky/p/4057499.html devicetree中数据和structdevice有什么关系 总体来说,devicetree与 ...

  5. mysql 安装截图

    这里有3个选项, 1.Developer Machine(开发机器),个人用桌面工作站,占用最少的系统资源 2.Server Machine(服务器),MySQL服务器可以同其它应用程序一起运行,例如 ...

  6. Java---练习(面试题) :字符串截取(2-最终版)

    在java中,字符串"abcd"与字符串"ab你好"的长度是一样,都是四个字符. 但对应的字节数不同,一个汉字占两个字节. 定义一个方法,按照指定的字节数来取子 ...

  7. RMQ算法讲解

    RMQ算法 引入: 例1.题目描述 输入N个数和M次询问,每次询问一个区间[L,R],求第L个数到R个数之间的最大值.   第一种方法:大暴力之术. 但是……时间复杂度最坏会达到 $O(NM)$,一半 ...

  8. iOS speex

    1. http://www.cocoachina.com/bbs/read.php?tid=114755 2, http://blog.csdn.net/jiangyiaxiu/article/det ...

  9. Python学习 1 一 Python2.75的安装及环境配置教程

    Python2.75的安装及环境配置教程 Python的语法简洁,功能强大,有大量的第三方开发包(模块),非常适合初学者上手.同时Python不像java一样对内存要求非常高,适合做一些经常性的任务方 ...

  10. cocos日记

    n/2/2015 ADT       E:\All Setup\eclipse_past\Eclipse_plugins_ADT 15/2/2015 配置cocos win32 开发环境 链接:htt ...