java - 如何在突出显示后立即获取 JTable 中当前选定单元格的索引?

标签 java swing event-handling jtable cell

我正在构建一个电子表格应用程序。但这与使用 table.getSelectedColumn()table.getSelectedRow() 查找 JTable 中选定的单元格不同。

Microsoft Excel 中,当我们使用箭头键浏览单元格时,单元格中的内容会在突出显示单元格后立即显示在公式栏中中。这里,最重要的是,当单元格通过上述选择突出显示时,单元格内的值也会同时显示。所以我的问题是,我们如何在 JTable 中做同样的事情?

我尝试使用keyEvent监听器做类似的事情,但问题是,当生成关键事件时,下一个单元格被突出显示,但前一个单元格的索引(这是之前突出显示的)正在 getSelectedRow() 和 getSelectedColumn() 方法中返回。 我还尝试了ListSelectionListener。但同样的错误也存在。

如果有任何方法可以在使用箭头键导航时突出显示新单元格后立即获取所选单元格的索引,那么这将起作用。由于我想像在 Excel 中一样更新公式栏,因此还应该生成一个事件。有人可以帮我解决这个问题吗?

提前致谢!

最佳答案

你可以使用这个简单的技巧! 只需要制作两个多余的 jTextfield。 (可以设置运行时不可见)

尝试从下面的代码段中得到一个想法。

private int r;
private int c;
private String buffer;

private void jTextField1KeyTyped(java.awt.event.KeyEvent evt) {                                     
    jTextField2.requestFocus();
    buffer = jTextField1.getText();
    jTable1.getModel().setValueAt(jTextField1.getText(), r, c); 
}                                    

private void jTable1KeyTyped(java.awt.event.KeyEvent evt) {                                 
    r = jTable1.getSelectedRow();
    c = jTable1.getSelectedColumn();
    jTable1.putClientProperty("terminateEditOnFocusLost", true);

    jTextField1.requestFocus();
}                                

private void jTextField1FocusGained(java.awt.event.FocusEvent evt) {                                        
    buffer = (String)jTable1.getModel().getValueAt(r, c);
    jTextField1.setText(buffer);
    jLabel1.setText(buffer);   
}                                       

private void jTextField2FocusGained(java.awt.event.FocusEvent evt) {                                        
    buffer = jTextField1.getText();
    jTable1.getModel().setValueAt(buffer, r, c);
    jTextField1.requestFocus();
}                            

关于java - 如何在突出显示后立即获取 JTable 中当前选定单元格的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27634161/

相关文章:

java - JPanel 不支持 setMinimumSize/ComponentListener

java - 由 : java. 引起 lang.NoClassDefFoundError: [Lorg/hibernate/engine/FilterDefinition;

java - 从用户读取一行整数 - Java

javafx 拖放无法拖放到另一个应用程序中,可以从 swing 包装器中拖放

java - 通过引用操作 jtree 节点似乎不起作用(swing)

javascript - Backbone subview 和事件解除绑定(bind)

python - tkinter:停止文本小部件标签中的事件传播

java - 字符串的 ArrayList 作为参数并返回列表中的最后一项

java - 让 Swing 在没有提交按钮的情况下读取输入

Javascript 对象事件处理程序范围,最佳实践?