JTable获得修改后单元格的值

问题还原,如图:

更新前:
这里写图片描述
这里写图片描述

现在要把666改成1,点击更新后,你会发现更新后单元格还处于编辑状态,或者TableModel.getValueAt(0,1)获取的还是原来的值“666”。我们现在是想把“1”这个值更新进去,该怎么办呢?

这里写图片描述

这里只需要加一条语句就可以:cellEditor.stopCellEditing();

JTextField textFld = new JTextField();
DefaultCellEditor cellEditor = new DefaultCellEditor(pvIDTextFld);
cellEditor.stopCellEditing();

加入这条语句后,你会发现点击更新后,值“1”会被更新进入,通过调试,更新的时候TableModel.getValueAt(0,1)获取的值是修改后单元格的值,而不是原来的值。

这里写图片描述

在Java Swing中,`JTable`是一个用于显示表格数据的组件,可以实现类似Excel的功能。如果你想让某列的单元格双击时弹出一个下拉框供用户选择,你可以通过以下几个步骤来实现: 1. **创建自定义CellEditor**: 自定义一个`DefaultCellEditor`的子类,比如`DropdownCellEditor`,并在其中维护一个`JList`作为下拉列表。 ```java import javax.swing.*; import javax.swing.table.DefaultCellEditor; import javax.swing.table.TableCellEditor; public class DropdownCellEditor extends DefaultCellEditor { private JComboBox<String> comboBox; public DropdownCellEditor() { comboBox = new JComboBox<>(); // 初始化下拉框选项... comboBox.addActionListener(e -> fireEditingStopped()); } @Override public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { comboBox.setSelectedItem((String) value); // 设置当前单元格 return comboBox; } } ``` 2. **设置列编辑器**: 在`JTable`模型(如`DefaultTableModel`)中,将需要下拉框的列的编辑器设置为你自定义的`DropdownCellEditor`。 ```java JTable jTable = new JTable(model); // 获取指定列的索引 int dropdownColumnIndex = ...; jTable.getColumnModel().getColumn(dropdownColumnIndex).setCellEditor(new DropdownCellEditor()); ``` 3. **处理双击事件**: 要监听单元格的双击事件,可以在`JTable`上添加一个`MouseListener`,当鼠标在单元格上双击时触发操作。 ```java jTable.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { if (e.getClickCount() == 2 && e.getButton() == MouseEvent.BUTTON1) { int row = jTable.rowAtPoint(e.getPoint()); int col = jTable.columnAtPoint(e.getPoint()); String selectedValue = (String) jTable.getValueAt(row, col); // 这里可以根据选择的内容执行相应的操作 } } }); ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值