欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Jtable和JTree的写法示例代码

程序员文章站 2024-02-29 12:52:52
我们首先看看jtable和jtree的基本概念和常用构造方法。 一:表格(jtable): 1.基本概念: 表格(jtable)是swing 新增加的组件,主...

我们首先看看jtable和jtree的基本概念和常用构造方法。

一:表格(jtable):

1.基本概念:

表格(jtable)是swing 新增加的组件,主要是为了将数据以表格的形式显示.给显示大块数据提供了简单的机制.

 2.常用构造方法:

* jtable():使用系统默认的模型创建一个jtable 实例.

* jtable(int numrows,int numcolumns):创建一个使用defaulttablemodel 指定行、列的空表格。

* jtable(object[ ][ ] rowdata,object[ ][ ] columnnames):创建一个显示二维数据的表格。

可以直接使用表格列名数组和表格数据数组来创建表格。

* jtable(tablemodel dm):创建一个指定数据模式和默认字段模式的jtable 实例。

通常用数据模型类的对象来保存数据,而表格模型是通过表格列名数组和表格数据数组来创建的。

二:树(jtree):

1.基本概念:

 树(jtree):将分层数据集显示为轮廓的控件。

2.常用构造方法:

jtree():返回带有示例模型的jtree。

jtree(object[] value):返回jtree,指定数组的每个元素作为不被显示的新根节点的子节点。

 //只有这个构造函数可以创建多个根结点

jtree(object[] value):返回 jtree,指定数组的每个元素作为不被显示的新根节点的子节点。

jtree(treenode root):返回 jtree,指定的 treenode 作为其根,它显示根节点。

jtree(treenode root, boolean asksallowschildren):返回 jtree,指定的 treenode 作为其根,

它用指定的方式显示根节点,并确定节点是否为叶节点。(true设置为可添加子结点,再添加子结点).

示例代码:

package com.jtablehomework;
import java.awt.*;
import java.lang.reflect.field;
import java.util.linkedhashmap;
import java.util.list;
import java.util.map;
import java.util.vector;
import javax.swing.*;
import com.dao.cruddao;
import com.entry.login;
/**
 * 
 * @author zzy
 * 
 *   2016年12月1日下午1:52:29
 */
public class jtabledemo extends jframe {
 private jscrollpane jsp;
 private jtable jt;
 private defaulttablemodel tablemodel;

 public static void main(string[] args) {
  new jtabledemo();
 }
 public jtabledemo() {
  init();
  setsize(400, 500);
  setlocationrelativeto(null);
  setvisible(true);
  setdefaultcloseoperation(jframe.exit_on_close);
 }
 private void init() {
  container con = getcontentpane();
  con.setlayout(new borderlayout());
  createjtable(con);
 }
 public void createjtable(container con) {
  jlabel jl = new jlabel("用户信息");
  jl.sethorizontalalignment(swingconstants.center);
  adddata();
  jt = new jtable(tablemodel) {
   @override
   public boolean iscelleditable(int row, int column) {
    return false;
   }
  };
  system.out.println(jt.getname());
  // 用来获得鼠标点击位置的内容
  jt.addmouselistener(new mouseadapter() {
   public void mouseclicked(mouseevent e) {
    int selectrow = jt.getselectedrow();
    // system.out.println(selectrow);
    // int selectcow = jt.getselectedcolumn();
    for (int i = 0; i < jt.getcolumncount(); i++) {
     system.out.print(jt.getcolumnname(i) + ":");
     system.out.print(jt.getvalueat(selectrow, i) + "\t");
    }
    system.out.println();
    // system.out.println(selectcow);
    // system.out.println(tablemodel.getvalueat(selectrow,
    // selectcow));
    vector v = tablemodel.getdatavector();

   }
  });
  jt.setrowheight(30);// 设置表格的行高
  jt.setselectionforeground(color.red);// 设置选中的文字颜色
  jsp = new jscrollpane(jt);
  jsp.setviewportview(jt);
  con.add(jl, borderlayout.north);
  con.add(jsp, borderlayout.center);
 }
 public void adddata() {
  list<login> list = getdata();
  field[] field = login.class.getdeclaredfields();
  /**
   * 设置标题
   */
  object columnnames[] = new object[field.length];
  for (int i = 0; i < field.length; i++) {
   columnnames[i] = field[i].getname();
  }
  /**
   * 填充内容
   */
  object rowdata[][] = new object[list.size()][];
  for (int i = 0; i < list.size(); i++) {
   login l = list.get(i);
   object ob[] = new object[field.length];
   for (int j = 0; j < field.length; j++) {
    field[j].setaccessible(true);
    try {
     ob[j] = field[j].get(l);
    } catch (illegalargumentexception e) {
     e.printstacktrace();
     system.out.println("底层字段不可访问");
    } catch (illegalaccessexception e) {
     e.printstacktrace();
     system.out.println("对象不是声明字段的实例");
    }// 返回此对象上此字段的值
    rowdata[i] = ob;
   }
  }
  tablemodel = new defaulttablemodel(rowdata, columnnames);
 }
 public list<login> getdata() {
  string sql = "select * from login";
  map<string, object[]> m = new linkedhashmap<string, object[]>();
  m.put(sql, null);
  return new cruddao<login>(login.class).selectall(m).get(1);
 }
}

自己创建实体类 jtree里面的点击事件只要在switch里面输入查询语句和实体类就行了

部分请参考:《basejdbc和cruddao的写法实例代码》。

本文有关jtable和jtree的写法示例代码的内容就到这里,希望对大家有所帮助。如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!