swing 表格
基础表格
JTable用来编辑二维表格。注意添加到容器时表头和内容要分开添加。表头获取是table.getTableHeader()。
构造方法:
- JTable(int numRows, int numColumns)
- JTable(Object[][] rowData, Object[] columnNames):columnnames是表头名称
- JTable(TableModel dm): 用表格模型创建表格
方法:
setFont(Font f) |
- JTableHeader getTableHeader(): 获取表头
- jTableHeader.setFont(Font font);: 设置表头颜色
- jTableHeader.setForeground(Color fg)
- jTableHeader.setResizingAllowed(boolean resizingAllowed):时候可以拖动调整列大小
- jTableHeader.setReorderingAllowed(boolean reorderingAllowed): 是否可以拖动进行重新排序
- setRowHeight(int rowHeight): 行高
- setRowHeight(int row, int rowHeight): 指定行行高
- setAutoResizeMode(int mode)改变列宽的操作
- JTable.AUTO_RESIZE_ALL_COLUMNS 在所有的调整大小操作中,按比例调整所有的列。
- JTable.AUTO_RESIZE_LAST_COLUMN 在所有的调整大小操作中,只对最后一列进行调整。
- JTable.AUTO_RESIZE_NEXT_COLUMN 在 UI 中调整了一个列时,对其下一列进行相反方向的调整。
- JTable.AUTO_RESIZE_OFF 不自动调整列的宽度;使用滚动条
- JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS 在 UI 调整中,更改后续列以保持总宽度不变;此为默认行为。
- TableColumn jTable.getColumnModel().getColumn(int columnIndex):获取某列进行操作
- tableColumn.setWidth(int width);
- tableColumn.setPreferredWidth(int preferredWidth);
- tableColumn.setMinWidth(int minWidth);
- tableColumn.setMaxWidth(int maxWidth);
- tableColumn.sizeWidthToFit(): 设置列宽使其符合单元格宽度
- tableColumn.setResizable(boolean isResizable): 是否允许手动改变列宽
- tableColumn.setHeaderValue(Object headerValue): 设置该列表头名称
- jTable.getModel().setValueAt(Object aValue, int rowIndex, int columnIndex): 设置某个位置数据
- Object jTable.getModel().getValueAt(int rowIndex, int columnIndex):得到某个位置数据
表格模型
TableModel中储存了表格的一系列信息,实际上导入JTable中的数据自动变成TableModel。
TableModel中的方法:
- getRowCount(): 获取行数
- getColumnCount(): 获取列数
- String getColumnName(int columnIndex):获取指定列的表头名称
- Class<?> getColumnClass(int columnIndex): 获取列中所有数据
- isCellEditable(int rowIndex, int columnIndex):单元格是否可编辑
- Object getValueAt(int rowIndex, int columnIndex): 获取单元格
- setValueAt(Object aValue, int rowIndex, int columnIndex): 获取单元格值
监听器:
- tableModel.addTableModelListener(TableModelListener l): 添加表格模型监听,表格的数据维护,对数据的监听。
- tableModel.removeTableModelListener(TableModelListener l):去除表格模型监听
ListSelectionModel 表格选择器
它可以让用户以不同模式选中表格。
- table.setCellSelectionEnabled(boolean cellSelectionEnabled):设置表格可以被选择
- table.getSelectionModel(): 获得选择器
- selectionModel.setSelectionMode(int selectionMode):设置选择模式
- ListSelectionModel.MULTIPLE_INTERVAL_SELECTION 一次选择一个或多个连续的索引范围(默认)
- ListSelectionModel.SINGLE_INTERVAL_SELECTION 一次选择一个连续的索引范围
- ListSelectionModel.SINGLE_SELECTION 一次只能选择一个列表索引
监听器:
addListSelectionListener: 在选中状态改变时调用
TableCellRenderer 单元格的渲染器
可以自己创建一个表格渲染器。然后TableColumn有setCellRenderer(renderer)。
public static class MyTableCellRenderer extends DefaultTableCellRenderer { |
TableCellEditor 数据编辑器
数据编辑器可以在表格中加入textfield,JComboBox等组件。实际一般使用默认的实现类DefaultCellEditor
tableColumn.setCellEditor(cellEditor)设置表格编辑器
public static class MyCellEditor extends DefaultCellEditor { |
RowSorter 排序器
创建: RowSorter<TableModel> rowSorter = new TableRowSorter<TableModel>(tableModel)
TableRowSroter是RowSorter的实现类。
使用 table.setRowSorter(rowSorter)
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment