首页 > 解决方案 > JTable在未提交时从单元格获取值

问题描述

我想在未提交时从单元格中获取值(单元格处于编辑模式)-“实时”;可能吗?

我试过了,但只有当我提交数据时它才有效 - 按 Enter

int row = jTable.getSelectedRow();
int col = jTable.getSelectedColumn();
String cellValue = jTable.getValueAt(row, col).toString();

我想在不退出的情况下获取按键单元格值,在键入时实时获取此文本

KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(new KeyEventDispatcher() {
          @Override
          public boolean dispatchKeyEvent(KeyEvent e) {

              int row = jTable.getSelectedRow();
              int col = jTable.getSelectedColumn();


              if (e.getID() == KeyEvent.KEY_RELEASED) {
                  if (jTable.isEditing())
                      jTable.getCellEditor().stopCellEditing();
                  String cellValue = (jTable.getValueAt(row, col)!=null) ? jTable.getValueAt(row, col).toString() : "";
                  System.out.println(cellValue);
              }}

jTable.getCellEditor().stopCellEditing() - 打字时导致丑陋的输入/输出动画

@camickr 很抱歉造成混乱。你的解决方案没问题。我只需要添加 jTable.editCellAt(row, col); 回到编辑模式。

再次感谢

标签: javaswingjtable

解决方案


单元格处于编辑模式

在将值保存到模型之前,必须停止编辑。

最简单的方法是使用:

JTable table = new JTable(...);
table.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);

创建表时。

现在,当您单击按钮进行处理时,表格失去焦点,因此数据被保存。

查看表格停止编辑以获取更多信息。


推荐阅读