JTable 行 列 单元格操作——很实用

一.创建表格  
1) 调用无参构造函数. 
JTable table = new JTable(); 
2) 以表头和表数据创建表格,并且让表单元格不可改. 
String[] headers = { "表头一", "表头二", "表头三" }; 
Object[][] cellData = null; 
3) 利用TableModel 
DefaultTableModel model = new DefaultTableModel(cellData, headers) { 
  //此处设置单元格时否可以被编辑。如果要精确控制某个单元格或者行列可以编辑,只要在此方法中做简单编程即可。 
  public boolean isCellEditable(int row, int column) { 
    return false; 
  } 
}; 
table = new JTable(model); 

二.对列的操作  
1) 设置列不可随容器组件大小变化自动调整宽度. 
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); 
2) 限制某列的宽度(并不完全好用). 
TableColumn firsetColumn = table.getColumnModel().getColumn(0); 
firsetColumn.setPreferredWidth(30); 
firsetColumn.setMaxWidth(30); 
firsetColumn.setMinWidth(30); 
3) 设置当前列数. 
DefaultTableModel tableModel = (DefaultTableModel) table.getModel(); 
int count=5; 
tableModel.setColumnCount(count); 
4) 取得表格列数 
int cols = table.getColumnCount(); 
5) 添加列 
DefaultTableModel tableModel = (DefaultTableModel) table.getModel(); 
tableModel.addColumn("新列名"); 
6) 删除列 
// columnIndex是要删除的列序号 
table.removeColumn(table.getColumnModel().getColumn(columnIndex)); 

三.对行的操作  
1) 设置行高 
table.setRowHeight(20); 
2) 设置当前航数 
DefaultTableModel tableModel = (DefaultTableModel) table.getModel(); 
int n=5; 
tableModel.setRowCount(n); 
3) 取得表格行数 
int rows = table.getRowCount(); 
4) 添加表格行 
DefaultTableModel tableModel = (DefaultTableModel) table.getModel(); 
tableModel.addRow(new Object[]{"sitinspring", "35", "Boss"}); 
5) 删除表格行 
DefaultTableModel tableModel = (DefaultTableModel) table.getModel(); 
// rowIndex是要删除的行序号 
model.removeRow(rowIndex); 
5) 得到选中行(行号) 
int selectedRowIndex = table.getSelectedRow(); 
// 用户所选行的序列 
int[] selRowIndexs=table.getSelectedRows(); 

四.三.对单元格的操作  
1) 取得单元格数据 
DefaultTableModel tableModel = (DefaultTableModel) table.getModel(); 
// 取单元格数据,row是行号,column是列号 
String cellValue=(String) tableModel.getValueAt(row, column); 
2) 设置单元格数据 
tableModel.setValueAt(aValue, rowIndex, columnIndex); 
3) 结束单元格编辑 

table.getCellEditor().stopCellEditing(); 



http://javapub.iteye.com/blog/713175

在Java Swing中,`JTable` 提供了一个交互式界面,你可以通过自定义`TableCellEditor`和`TableCellRenderer`来实现特定功能,如当用户双击某一单元格时显示下拉框。下面是一个简单的步骤指南: 1. **创建数据模型**: 首先,你需要创建一个`DefaultTableModel`或继承自它的模型,用于存储表格的数据。 2. **设置`TableCellEditor`**: 自定义一个`DefaultCellEditor`的子类,覆盖`getEditorComponent()`方法,返回你要展示的`JComboBox`(下拉框)。例如: ```java public class MyComboBoxCellEditor extends DefaultCellEditor { private JComboBox comboBox; public MyComboBoxCellEditor() { comboBox = new JComboBox(dataList); // dataList是你预先准备好的选项集合 } @Override public Component getEditorComponent() { return comboBox; } } ``` 3. **在`JTable`上应用编辑器**: 设置表头对应的`ColumnModel`,将自定义的编辑器应用于该: ```java JTable table = new JTable(model); table.getColumnModel().getColumn(columnIndex).setCellEditor(new MyComboBoxCellEditor()); ``` 其中,`columnIndex`是你要添加下拉框的索引。 4. **处理事件**: 当用户双击单元格时,需要监听`TableCellEditor`的`editingStopped`事件,并根据用户的选择更新模型中的数据。 5. **实现`editingStopped`回调**: 添加事件监听器并响应用户的操作: ```java table.addCellEditorListener(e -> { int row = e.getRow(); Object value = table.getValueAt(row, columnIndex); model.setValueAt(value, row, columnIndex); }); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值