树组件首先要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. 新版的DEV RichEdit很强悍,兼容docx,排版更强

    RV至少rtf格式不用自己搞了 Rv没Dev出的强悍 RV最蛋疼的就是表格 DEV目前看来,表格比RV强其他方面来说,觉得到差不多,无所谓dev的excel我整过一次,BUG不少dxRichEdit换 ...

  2. android 自定义titlebar

    首先,修改标题栏的宽度和背景,在style.xml中添加: <style> <item name="android:background">@drawabl ...

  3. 【转】(DT系列三)系统启动时, dts 是怎么被加载的

    原文网址:http://www.cnblogs.com/biglucky/p/4057481.html 一,主要问题:系统在启动的时候,是怎么加载 dts的:Lk,kernel中都应调查. 二:参考文 ...

  4. 元素水平垂直居中(transform,margin,table-cell,jQuery)

    1.水平居中 .div{ margin:0 auto; (或者 margin:auto;) width:500px; height:300px; } 2.使用margin水平垂直居中 方式一: .di ...

  5. SQL server 分离数据库与删除数据库的区别

    今天,在sql server 中,分离数据库,然后就问了一下,与删除数据库的区别 区别在于(百度一下): 分离后,.mdb和.log文件都在,以后你需要用的时候,还可以用附加数据库的方法加上去,分离数 ...

  6. 格式化字符串format函数

    自python2.6开始,新增了一种格式化字符串的函数str.format(),可谓威力十足.那么,他跟之前的%型格式化字符串相比,有什么优越的存在呢?让我们来揭开它羞答答的面纱. 语法 它通过{}和 ...

  7. F - True Liars - poj1417(背包+并查集)

    题意:有这么一群人,一群好人,和一群坏人,好人永远会说实话,坏人永远说假话,现在给你一组对话和好人与坏人的数目P1, P2. 数据里面的no是A说B是坏人, yes代表A说B是好人,就是这样,问题能不 ...

  8. "解密"微信开放高级接口 企业如何应对

    今天(2013年10月29日)腾讯终于对外公开了微信公众平台最新的接口,一石激起千层浪,对于很多微信公众平台的运营人员来说,今天是令人兴奋的一天!微信在向申请服务号的企业开发了大量接口.用户不想输入文 ...

  9. 【开源项目】Android 手写记事 App(半成品)

    该项目已上传到 CSDN 的 Git 平台中 项目地址:https://code.csdn.net/gd920129/whiteboard GIT SSH:git@code.csdn.net:gd92 ...

  10. Android常用的物理按键及其触发事件

    Activity和View都能接收触摸和按键,如果响应事件只需要在继承类里复写事件函数即可:当一个视图(如一个按钮)被触摸时,该对象上的 onTouchEvent() 方法会被调用.不过,为了侦听这个 ...