JTable是将数据以表格的形式显示给用户看的一种组件,它包括行和列,其中每列代表一种属性,例如:学号,姓名,成绩等等。而每行代表的是一个实体,例如一个学生。在JTable中,默认情况下列会平均分配父容器的宽度,你可以通过鼠标改变列的宽度,还可以交换列的排列顺序,当然,这些都可以通过代码进行限定和修改。一下就进入正题,介绍JTable的一些构造函数,JTable有许多构造函数,具体的请查看API文档,这里只对部分构造函数和功能进行介绍:
1.JTable(Object[][] rowData,Object[] columnNames)
: 构造一个 JTable
来显示二维数组rowData
中的值,其列名称为 columnNames
。
下面是例子的源代码:
- public class JTableTest extends JFrame
- {
-
- public JTableTest()
- {
- intiComponent();
- }
-
-
-
-
- private void intiComponent()
- {
-
-
-
- String[] columnNames =
- { "姓名", "学号", "性别", "工期", "学院", "学校" };
-
-
-
-
- Object[][] obj = new Object[2][6];
- for (int i = 0; i < 2; i++)
- {
- for (int j = 0; j < 6; j++)
- {
- switch (j)
- {
- case 0:
- obj[i][j] = "赵匡义";
- break;
- case 1:
- obj[i][j] = "123215";
- break;
- case 2:
- obj[i][j] = "男";
- break;
- case 3:
- obj[i][j] = "两年";
- break;
- case 4:
- obj[i][j] = "计算机技术学院";
- break;
- case 5:
- obj[i][j] = "北京理工大学";
- break;
- }
- }
- }
-
-
-
-
-
- JTable table = new JTable(obj, columnNames);
-
-
-
- TableColumn column = null;
- int colunms = table.getColumnCount();
- for(int i = 0; i < colunms; i++)
- {
- column = table.getColumnModel().getColumn(i);
-
- column.setPreferredWidth(100);
- }
-
-
-
- table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
-
-
- JScrollPane scroll = new JScrollPane(table);
- scroll.setSize(300, 200);
-
-
- add(scroll);
- this.setVisible(true);
- this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- this.pack();
- }
-
- public static void main(String[] args)
- {
- new JTableTest();
- }
- }
界面如下:
以上这种构造方法,看起来没有用到TableModel,其实是系统帮我们自动生成了一个DefaultModel的实例,DefaultModel是TableModel的子类。每个JTabel都会有一个TableModel,这个TabelModel管理表格的数据,下面就来介绍定义自己的TableModel来实现自己的JTable.
2. JTable(TableModel dm)
: 构造一个JTable
,使用数据模型dm
、默认的列模型和默认的选择模型对其进行初始化。
下面是例子的源代码:
下面是程序界面:
这里要指出的是每个数据单元的都有个cell renderer根据其数据类型将数据进行绘画显示出来。默认情况下boolean类型对应的是CheckBox对象,Object类型是将对象的字符显示出来,ImageIcon是将图片以lable形式显示出来等等.具体的可以查看API文档.