表格(JTable)是我们在GUI开发中很常用的一个组件。表格在可视化编程中用于显示信息,在Swing编程中非常有用,当要显示大量数据时,用表格可以清晰的显示出来。
本篇博客将演示JTable的基本用法。
构造方法:
方法名 | 说明 |
---|---|
JTable() | 构造一个默认的 JTable,使用默认的数据模型、默认的列模型和默认的选择模型对其进行初始化 |
JTable(int numRows, int numColumns) | 使用 DefaultTableModel 构造具有 numRows 行和 numColumns 列个空单元格的 JTable |
JTable(Object[][] rowData, Object[] columnNames) | 构造一个 JTable 来显示二维数组 rowData 中的值,其列名称为 columnNames |
JTable(TableModel dm) | 构造一个 JTable,使用数据模型 dm、默认的列模型和默认的选择模型对其进行初始化 |
JTable(TableModel dm, TableColumnModel cm) | 构造一个 JTable,使用数据模型 dm、列模型 cm 和默认的选择模型对其进行初始化 |
JTable(TableModel dm, TableColumnModel cm, ListSelectionModel sm) | 构造一个 JTable,使用数据模型 dm、列模型 cm 和选择模型 sm 对其进行初始化 |
JTable(Vector rowData, Vector columnNames) | 构造一个 JTable 来显示 Vector 所组成的 Vector rowData 中的值,其列名称为 columnNames |
使用示例:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.MessageFormat;
import java.util.Random;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
/**
* 表格示例
*
* @author jianggujin
*
*/
public class TableDemo extends JFrame
{
// 默认表格模型
private DefaultTableModel model = null;
private JTable table = null;
private JButton addBtn = null;
public TableDemo()
{
super("TableDemo");
String[][] datas = {};
String[] titles = { "列一", "列二" };
model = new DefaultTableModel(datas, titles);
table = new JTable(model);
addBtn = new JButton("添加数据");
addBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e)
{
model.addRow(new String[] { getRandomData(), getRandomData() });
}
});
add(addBtn, BorderLayout.NORTH);
add(new JScrollPane(table));
setSize(400, 300);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args)
{
new TableDemo();
}
/**
* 获得随机字符串,该方法仅用于获得随机字符串,可以忽略
*
* @return
*/
private String getRandomData()
{
String source = "0123456789abcdefghijklmnopqrstuvwxyz";
int len = source.length();
Random random = new Random(System.currentTimeMillis());
return MessageFormat.format("{0}{0}{0}", source.charAt(random.nextInt(len)));
}
}
运行效果: