大家好,我是小面,今天给大家分享一下在java中如何运用Table。
在Java中,表用于将数据排列成列和行。列是表中水平排列的空间,而行是表中垂直排列的空间。列和行之间的交点称为单元格,用于保存单条数据。
在Java中,开发人员可以使用JTable方法在其应用程序中创建表。JTable是从JComponent类继承的Swing组件。
如何在Java中创建表
要创建表,需要创建JTable类的实例。您需要在其构造函数中为要构造的表提供两个参数(row和column),如以下示例代码段所示:
代码语言:javascript复制JTable table = new JTable (row, column);
row和column的值可以由两个整数值组成,如下所示:
代码语言:javascript复制JTable table = new JTable (5,3);
上面的语句创建了一个包含5行3列的表。
程序员也可以为每行中的数据提供一个二维数组,为列名提供一个一维数组,而不是为JTable构造函数提供整数。以下是如何使用数组在Java中创建表:
代码语言:javascript复制JTable(Object[][] rowData, Object[] columnNames)
下面是一些示例代码,展示了如何用Java创建一个表并填充数据:
代码语言:javascript复制import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
class Table{
public static void main(String args[]){
JFrame frame = new JFrame();
String[] columnNames = {"姓名", "年龄", "是否学生"};
Object[][] data = {
{"陈晨曦", new Integer(5), new Boolean(false)},
{"阿星", new Integer(3), new Boolean(true)},
{"阿楠", new Integer(2), new Boolean(false)},
{"高东",new Integer(20), new Boolean(true)},
{"阿强", new Integer(10), new Boolean(false)}
};
JTable table = new JTable(data, columnNames);
frame.add(table);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400,400);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
如果在Idea中运行此代码,它将生成以下输出:
当您单击上述任何一个单元格时,您会注意到其中的数据是可编辑的。如果您只是向用户展示数据,这不是一个特别理想的功能。此外,在向用户演示时,所有数据都被视为字符串。
另一个值得关注的问题是,如果您在数据库对象中查询特定值,则必须将所有值复制到数组或向量中。
为了避免这些问题,您可以使用模型创建表格。
如何在Java中使用模型创建表
首先,了解如何处理表数据很重要。所有表(包括使用JTable方法创建的表)都使用表模型来管理其数据。当开发人员没有向JTable的构造函数提供表模型时,将自动为其创建DefaultTableModel的实例。因此,如果需要使用自定义模型,则需要将其提供给JTable构造函数,如以下示例代码所示:
代码语言:javascript复制 JTable table = new JTable(new MyTableModel());
要定义表模型,程序员需要创建一个扩展AbstractTableModel类的类:
代码语言:javascript复制class MyTableModel extends AbstractTableModel{
}
在表模型中,可以包括行和列名的数据,如前面的JTable示例所示。为了确保表模型类是一个具体的类,您需要实现AbstractTableModel的以下三个方法:
代码语言:javascript复制public int getRowCount();
public int getColumnCount();
public Object getValueAt(int row, int column);
您可以实现更多的方法,但必须确保上面的方法是您实现的方法之一。您可以从官方的Oracle API文档中找到其他方法的描述。
下面的代码示例展示了如何在Java中使用表模型:
代码语言:javascript复制import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
class TableUsingModel{
public static void main(String args[]){
JFrame frame = new JFrame();
JTable table = new JTable(new MyTableModel());
frame.add(table);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400,400);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
class MyTableModel extends AbstractTableModel {
String[] columnNames = {"姓名", "年龄", "位置"};
Object[][] data = {
{"陈晨曦", new Integer(25), "北京"},
{"阿星", new Integer(31), "上海"},
{"阿楠", new Integer(29), "河南"},
{"高东",new Integer(20), "浙江"},
{"阿强", new Integer(18), "福建"}
};
public int getRowCount() {
return data.length;
}
public int getColumnCount() {
return columnNames.length;
}
public Object getValueAt(int row, int col) {
return data[row][col];
}
}
这将产生以下输出:
这一次,尝试双击任何单元格,你会发现它是不可编辑的。
如何在Java中管理列宽和列高
如果要设置行的高度,可以使用setRowHeight()方法。
代码语言:javascript复制JTable table = new JTable(data, columnNames);
table.setRowHeight(80);
上述示例将每行的高度设置为80像素。
要设置列的宽度,可以使用setPreferredWidth()方法。首先,需要创建TableColumnModel类型的列模型。然后,您可以获得所需的特定列,然后设置其首选宽度。下面是一些示例代码,说明如何在Java中设置表的列宽:
代码语言:javascript复制TableColumnModel columnModel = table.getColumnModel();
columnModel.getColumn(2).setPreferredWidth(200);
小结
在本编程教程中,程序员学习了如何使用JTable或表模型在Java中创建表。
上面显示的代码示例将表直接添加到JFrame容器中。但是,您可以将表添加到滚动窗格中,这样当数据超出容器时,用户可以轻松浏览数据。