繁体   English   中英

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

[英]How to get the currently selected cell's indices in JTable immediately after it is highlighted?

我正在构建一个电子表格应用程序。 但这不是像使用table.getSelectedColumn()table.getSelectedRow()在JTable中查找所选单元格那样的问题。

Microsoft Excel ,当我们使用箭头键浏览单元格时,单元格中的内容在突出显示该单元格后立即显示在Formula Bar 在此,最重要的是, when a cell is highlighted by the selection as above, the value inside the cell is displayed at the sametime 所以我的问题是,我们如何在JTable中做同样的事情?

我试图使用keyEvent listener做类似的事情,但是问题是,当生成一个键事件时,下一个单元格被突出显示,但是前一个(先前被突出显示)的索引在getSelectedRow( )和getSelectedColumn()方法。 我也尝试了ListSelectionListener 但存在相同的故障。

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

提前致谢!

您可以使用这个简单的把戏! 只需要制作两个多余的jTextfields。 (可以在运行时设置为不可见)

尝试从下面的代码段中获得想法。

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();
}                            

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM