java - 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); 回到编辑模式。
再次感谢
解决方案
单元格处于编辑模式
在将值保存到模型之前,必须停止编辑。
最简单的方法是使用:
JTable table = new JTable(...);
table.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
创建表时。
现在,当您单击按钮进行处理时,表格失去焦点,因此数据被保存。
查看表格停止编辑以获取更多信息。
推荐阅读
- html - 如何在 CSS 中制作一个类似节点的小圆圈
- sql-server - SQL Server 中的表设计
- r - Shiny 应用程序中的操作按钮使用来自用户的输入更新 url 中的查询
- azure-active-directory - 需要更新用户 Microsoft Outlook 上的联系人,他们真的需要 Active Directory 吗?
- excel - VBA:与 IE 中的 javascript 弹出窗口交互
- mysql - ThinkingSphinx::SphinxError(未知的 MySQL 错误)
- javascript - React 全局 ErrorBoundary 优雅失败
- c# - 如何确定标记扩展返回值的目标类型?
- angular - Angular - 包含来自本地自定义 npm 模块的 .ts 文件(已安装)
- python - 使用 Celery tasks.py 中的 Django 通道向客户端发送消息