在Java中,表用于将数据排列成列和行。列是表中水平排列的空间,而行是表中垂直排列的空间。列和行之间的交点称为单元格,用于保存单条数据。
在Java中,开发人员可以使用JTable方法在其应用程序中创建表。JTable是从JComponent类继承的Swing组件。
如何在Java中创建表
要创建表,需要创建JTable类的实例。您需要在其构造函数中为要构造的表提供两个参数(row和column),如以下示例代码段所示:
JTable table = new JTable (row, column);
row和column的值可以由两个整数值组成,如下所示:
JTable table = new JTable (5,3);
上面的语句创建了一个包含5行3列的表。
程序员也可以为每行中的数据提供一个二维数组,为列名提供一个一维数组,而不是为JTable构造函数提供整数。以下是如何使用数组在Java中创建表:
JTable(Object[][] rowData, Object[] columnNames)
下面是一些示例代码,展示了如何用Java创建一个表并填充数据:
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构造函数,如以下示例代码所示:
JTable table = new JTable(new MyTableModel());
要定义表模型,程序员需要创建一个扩展AbstractTableModel类的类:
class MyTableModel extends AbstractTableModel{ }
在表模型中,可以包括行和列名的数据,如前面的JTable示例所示。为了确保表模型类是一个具体的类,您需要实现AbstractTableModel的以下三个方法:
public int getRowCount(); public int getColumnCount(); public Object getValueAt(int row, int column);
您可以实现更多的方法,但必须确保上面的方法是您实现的方法之一。您可以从官方的Oracle API文档中找到其他方法的描述。
下面的代码示例展示了如何在Java中使用表模型:
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()方法。
JTable table = new JTable(data, columnNames); table.setRowHeight(80);
上述示例将每行的高度设置为80像素。
要设置列的宽度,可以使用setPreferredWidth()方法。首先,需要创建TableColumnModel类型的列模型。然后,您可以获得所需的特定列,然后设置其首选宽度。下面是一些示例代码,说明如何在Java中设置表的列宽:
TableColumnModel columnModel = table.getColumnModel(); columnModel.getColumn(2).setPreferredWidth(200);
小结
在本编程教程中,程序员学习了如何使用JTable或表模型在Java中创建表。
上面显示的代码示例将表直接添加到JFrame容器中。但是,您可以将表添加到滚动窗格中,这样当数据超出容器时,用户可以轻松浏览数据。

