树组件首先要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. OpenMP 并行化处理测试

    OpenMP 并行化处理测试 #pragma omp parallel for 这条语句是用来指定后面的for循环语句变成并行执行的,将for循环里的语句变成并行执行后效率会不会提高呢?还是测试一 下 ...

  2. linq 的Distinct 扩展方法.

    List<miniclass> classs = new List<miniclass>(); classs.Add(new miniclass() { token = &qu ...

  3. Vista UAC下应用程序标注为“需要管理员权限”的四种方法

    在Microsoft 的UACBlog里对此有过叙述.总结如下: 首先,如果一个程序被识别为管理员程序时,Vista会在它的图标上加上一个盾牌标记.因此很容易看出来. 其次,如果UAC有效的话,管理员 ...

  4. 生产环境下,不建议用早期版本的Mono........

    一个BUG修复需要4年!!!!!!!!!!!!!也是醉了....不造被微软收购后的Xamarin会不会好起来

  5. 跑马灯js

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. 下载cppunit

    cppunit的官方地址:http://sourceforge.net/projects/cppunit 方式一:下载打包好的版本 下载地址:http://sourceforge.net/projec ...

  7. [Design Pattern] Mediator Pattern 简单案例

    Meditor Pattern,即调解模式,用一个调解类类处理所有的沟通事件,使得降低多对象之间的沟通难度,属于行为类的设计模式.为了方便理解记忆,我也称其为,沟通模式. 下面是一个调解模式的简单案例 ...

  8. 链接器(linker)的作用——CSAPP第7章读书笔记

    首先说说我为什么要去读这一章.这个学期开OS的课,在Morden Operating System上读到和Process有关的内容时看到这样一句话:“Process is fundamentally ...

  9. Exception testing

    怎样去验证代码是否抛出我们期望的异常呢?虽然在代码正常结束时候验证很重要,但是在异常的情况下确保代码如我们希望的运行也很重要.比如说: new ArrayList<Object>().ge ...

  10. [置顶] 【Git入门之九】解决冲突

    原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/12309531 1.多人协作冲突 如果多人同时修改了同一个文件,那会出现什么样 ...