简单了解
在一般情况下我们都不是在窗口中直接单独使用表格这个组件。而我们常常的做法是将表格这个组件有放在另外一个组件上。这时我们就需要先来了解一下与JTable显示有关的几个类了。
JScrollPane类
DefaultTableModel类
JScrollPane可以产生一个放置表格的组件而且会自动产生竖直方向的滚动条。
用法如下
final JScrollPane scrollPane = new JScrollPane(); no one will only a
首先来生成一个JScrollPane的对象然后将该对象添加到窗口的基层面板中以保证可以正常显示这个组件。接下来的两行是给这个组件中添加一个可以显示的20行10列的原始表格。
DefaultTableModel类就相当于一个显示的框架一样来可以用来控制表格显示的样式。以上代码亦可以这样写
final JScrollPane scrollPane = new JScrollPane();
但是我们要对诸多的表格样式控制的话还是借助于DefaultTableModel等不同的model类比较好。
一、表格的初始化 the alongs years and
a)
例如如下程序所示
table = new JTable(20,10);
第一局中的对象生成是就利用的JTalbe类的构造函数构造出一个20行10列的原始表格来。运行结果如下图所示。
我们看到运行的结果中是带有竖直方向的滚动条的。但是并没有我们想看到的表头。二是默认的用A-Z等来表示的象征性的表头。
b)
我们知道表格是可以看成一个二维数组的。正好我们可以借助于数组来建立一个N行N列的自定义表格。
例如如下程序所示
String[][] row=new String[20][10];
String[] column={"id","name","eduid","sex","age","birthday","addres","remark"};
前面的两行分别定义了一个二维数组和一个以为数组。二维数组用来定义表格的行数和列数。而以为数组则是用来定义表格的表头。(值得注意的是虽然表格最终的列数是由你所定义的表头决定的(如果你定义了两个列的表头不管二维数组中定义的列式多少最终只会显示两列)但是表头的个数一定要不大于二维数组定义的列数)
运行效果如下图所示
可以看到表格中显示了我们定义好的表头。
c)
Java类库中提供了一个动态数组类型即vector它可以用来动态的存储数据。且不会造成资源和空间的浪费。常常我们会遇到不知道数据量的大小而无法确定数据存储结构的大小的问题。Vector便可以解决此问题。它会根据你的数据量的大小来自行减小或扩张存储空间。够人性化吧。
我们可以在设置model类的时候就将model的参数设置为一个vector对象这样一来,就相当于表格中已经被填充了一个向量
我们可以利用向量的特性用一个向量来存储一条记录。
那么有多条记录时。我们便可以利用循环来扩充vector。
最后将记录所在的向量添加到设置model时所产生的向量中(二维向量)。便可以产生一个类似于二维数组的的表格模型。同事根据向量的特性我们对表格数据的操作可以通过对向量的操作来实现。
AbstractTableModel类
上面说了不同的model类有不同的用处现在我们来使用AbstractTableModel类
我们首先需要利用AbstractTableModel类类在生产model对象的时候给表格内初始化一个vector对象进去。而AbstractTableModel类本身并没有这个方法的实现所以我们继承AbstractTableModel类来自定义一个类以实现我们需要的功能。则又如下代码
class Table_Model extends AbstractTableModel {
}
以上代码实现了我们自定义的model类
在这个自定义的model类中我们还会定义一系列的用于对数据操作的方法以实现对表格中数据的操作(增删改查等)
如下代码
public void addRow(String name, boolean sex, String age) {
..
以上代码中的解释了对表格中的数据添加和删除的操作,而删除中又有单行删除和多行删除。
值得注意的是在AbstractTableModel类中需要通过重写AbstractTableModel类中的getColumnCount和getColumnName方法来实现表头的自定义代码如下
private String[] title_name = { "ID", "姓名", "性别", "年龄" };
public String getColumnName(int col) {
效果如下图所示
以上是填入数据后的效果
以上是清除数据后的效果
二、列宽及字体显示样式
a)
b)
c)
@Override