我正在构建一个电子表格应用程序。但这与使用 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/