javax.swing.JTable类是java提供给用户创建表格的,使用它可以快捷的实现很多功能,比如直观的展现一个班所有的学生信息等。
用法:
在创建窗口的方法里直接创建JTable的对象JTable table = new JTable(model);
model是一个类,这个类实现了TableModel接口,
通过重写其中的方法可以设置表格的各种属性,所以在创建JTable之前还要加上 Model model=new Model();
Model 类的内容会在下面给出。
当然我在网上看到有很多没用TabelModel的代码,发现其代码不是那么直观,所以我更倾向于使用TableModel,
好处就是操作起来方便,代码更清晰。
至于TabelModel中的方法该怎么重写我会在代码注释中会给出,就不赘述了。
源代码:
import javax.swing.event.TableModelListener; import javax.swing.table.TableModel; public class Model implements TableModel { // 创建数组用于单元格中显示的内容 String[][] values = new String[3][20]; /** * 初始化数组内容 */ public void setValues() { values[0][0] = "小明"; values[1][0] = "20150809"; values[2][0] = "男"; for (int i = 1; i < 20; i++) { values[0][i] = "没有数据"; } } @Override public int getRowCount() { // 设置总行数 return 20; } @Override public int getColumnCount() { // 设置总列数 return 3; } @Override public String getColumnName(int columnIndex) { // 设置单元格列属性(表头名) if (columnIndex == 0) { return "姓名"; } else if (columnIndex == 1) { return "学号"; } else if (columnIndex == 2) { return "性别"; } return null; } /** * 设置每列数据类型 */ @Override public Class<?> getColumnClass(int columnIndex) { if(columnIndex==0){ return String.class; }else if(columnIndex == 1){ return String.class; }else if(columnIndex==2){ return String.class; } return null; } /** * 设置单元格是否允许编辑 */ @Override public boolean isCellEditable(int rowIndex, int columnIndex) { return false; } /** * 设置单元格数据内容 */ @Override public Object getValueAt(int rowIndex, int columnIndex) { setValues(); return values[columnIndex][rowIndex]; } /** * 设置单元格的值 */ @Override public void setValueAt(Object aValue, int rowIndex, int columnIndex) { } @Override public void addTableModelListener(TableModelListener l) { // 此方法可给表格添加监听 } @Override public void removeTableModelListener(TableModelListener l) { // 此方法可给表格移除监听 } }
主类:
import java.awt.BorderLayout; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.RowSorter; import javax.swing.table.TableModel; import javax.swing.table.TableRowSorter; public class Manager { /** * @param JTable使用示例 */ public static void main(String[] args) { new Manager().showFrame(); } public void showFrame() { // 设置窗体属性 JFrame frame = new JFrame("JTable"); frame.setLayout(new BorderLayout()); frame.setSize(300,400); frame.setDefaultCloseOperation(3); frame.setLocationRelativeTo(null); // 创建表格和设置表格格式的类 Model model = new Model(); JTable table = new JTable(model);
//将表格加入滚动面板便于显示 JScrollPane jscroll = new JScrollPane(table); // 创建自动排序的对象,点击表头可自动对表格进行排序 RowSorter<TableModel> rs = new TableRowSorter<TableModel>(model); table.setRowSorter(rs); frame.add(jscroll, BorderLayout.CENTER); frame.setVisible(true); } }