JTable
,表格。JTable 是用来显示和编辑常规二维单元表。
表格组件和其他普通组件一样,需要添加到中间容器中才能显示,添加表格到容器中有两种方式:
- 添加到普通的中间容器中(如上面代码实例所示的添加到JPanel),此时添加的jTable只是表格的行内容,表头(jTable.getTableHeader())需要额外单独添加。此添加方式适合表格行数确定,数据量较小,能一次性显示完的表格;
- 添加到JScrollPane滚动容器中,此添加方式不需要额外添加表头,jTable添加到jScrollPane中后,表头自动添加到滚动容器的顶部,并支持行内容的滚动(滚动行内容时,表头会始终在顶部显示)。
— 创建简单表格
package example;
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.WindowConstants;
public class examplee {
public static void main(String[] args) {
JFrame frame = new JFrame("测试窗口");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 创建内容面板,使用边界布局
JPanel panel = new JPanel(new BorderLayout());
// 表头(列名)
Object[] columnNames = {"姓名", "语文", "数学", "英语", "总分"};
// 表格所有行数据
Object[][] rowData = {
{"张三", 80, 80, 80, 240},
{"John", 70, 80, 90, 240},
{"Sue", 70, 70, 70, 210},
{"Jane", 80, 70, 60, 210},
{"Joe", 80, 70, 60, 210}
};
// 创建一个表格,指定 所有行数据 和 表头
JTable table = new JTable(rowData, columnNames);
//把表头添加到容器顶部(使用普通的中间容器添加表格时,表头和内容需要分开添加)
panel.add(table.getTableHeader(), BorderLayout.NORTH);
//把表格内容添加到容器中心
panel.add(table, BorderLayout.CENTER);
frame.setContentPane(panel);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
运行结果:
— 创建带滚动条的表格
// 创建表格
JTable table = new JTable(...);/* 设置表格相关数据 */
// 设置滚动面板视口大小(超过该大小的行数据,需要拖动滚动条才能看到)
table.setPreferredScrollableViewportSize(new Dimension(int width, int height));// 创建滚动面板,把 表格 放到 滚动面板 中(表头将自动添加到滚动面板顶部)
JScrollPane scrollPane = new JScrollPane(table);/* 再把滚动面板 scrollPane 添加到其他容器中显示 */
完整代码
package example;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
public class examplee {
public static void main(String[] args) {
JFrame frame = new JFrame("测试窗口");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 创建内容面板
JPanel panel = new JPanel();
// 表头(列名)
String[] columnNames = {"序号", "姓名", "语文", "数学", "英语", "总分"};
// 表格所有行数据
Object[][] rowData = {
{1, "张三", 80, 80, 80, 240},
{2, "John", 70, 80, 90, 240},
{3, "Sue", 70, 70, 70, 210},
{4, "Jane", 80, 70, 60, 210},
{5, "Joe_05", 80, 70, 60, 210},
{6, "Joe_06", 80, 70, 60, 210},
{7, "Joe_07", 80, 70, 60, 210},
{8, "Joe_08", 80, 70, 60, 210},
{9, "Joe_09", 80, 70, 60, 210},
{10, "Joe_10", 80, 70, 60, 210},
{11, "Joe_11", 80, 70, 60, 210},
{12, "Joe_12", 80, 70, 60, 210},
{13, "Joe_13", 80, 70, 60, 210},
{14, "Joe_14", 80, 70, 60, 210},
{15, "Joe_15", 80, 70, 60, 210},
{16, "Joe_16", 80, 70, 60, 210},
{17, "Joe_17", 80, 70, 60, 210},
{18, "Joe_18", 80, 70, 60, 210},
{19, "Joe_19", 80, 70, 60, 210},
{20, "Joe_20", 80, 70, 60, 210}
};
// 创建一个表格,指定 表头 和 所有行数据
JTable table = new JTable(rowData, columnNames);
// 设置表格内容颜色
table.setForeground(Color.BLACK); // 字体颜色
table.setFont(new Font(null, Font.PLAIN, 14)); // 字体样式
table.setSelectionForeground(Color.DARK_GRAY); // 选中后字体颜色
table.setSelectionBackground(Color.LIGHT_GRAY); // 选中后字体背景
table.setGridColor(Color.GRAY); // 网格颜色
// 设置表头
table.getTableHeader().setFont(new Font(null, Font.BOLD, 14)); // 设置表头名称字体样式
table.getTableHeader().setForeground(Color.RED); // 设置表头名称字体颜色
table.getTableHeader().setResizingAllowed(false); // 设置不允许手动改变列宽
table.getTableHeader().setReorderingAllowed(false); // 设置不允许拖动重新排序各列
// 设置行高
table.setRowHeight(30);
// 第一列列宽设置为40
table.getColumnModel().getColumn(0).setPreferredWidth(40);
// 设置滚动面板视口大小(超过该大小的行数据,需要拖动滚动条才能看到)
table.setPreferredScrollableViewportSize(new Dimension(400, 300));
// 把 表格 放到 滚动面板 中(表头将自动添加到滚动面板顶部)
JScrollPane scrollPane = new JScrollPane(table);
// 添加 滚动面板 到 内容面板
panel.add(scrollPane);
// 设置 内容面板 到 窗口
frame.setContentPane(panel);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
运行结果:
构造方法:
(其他构造方法可见API中的详细描述)
JTable(Vector rowData, Vector 构造一个 JTable 来显示 Vector 所组成的 Vector rowData 中的值,其列名称为 columnNames。
Vector的使用可见下一个博客