当前位置: 移动技术网 > IT编程>开发语言>Java > Jtable和JTree的写法示例代码

Jtable和JTree的写法示例代码

2019年07月19日  | 移动技术网IT编程  | 我要评论

我们首先看看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的写法示例代码的内容就到这里,希望对大家有所帮助。如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对移动技术网网站的支持!

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网