2016-12-24 51 views
-1

在编辑该单元格期间释放密钥时,我想获取JTable单元格的坐标(行索引和列索引)。我试图这样做:在JTable中编辑单元格的位置

@Override 
public void keyReleased(KeyEvent released) { 
    JTable tbl = (JTable)(released.getSource()); 
    if (tbl.getCellEditor() != null) 
     System.out.println(tbl.getSelectedRow()+","+tbl.getSelectedColumn()); 
} 

但是这不返回正在编辑的单元格的位置(行索引和列索引)。请帮忙。

+0

这是一个奇怪的要求,至少对我来说,你可能会问一个[XY问题](http://mywiki.wooledge.org/XyProblem),你问什么时候如何解决特定的代码问题最好的解决方案可能是使用完全不同的方法。考虑告诉我们你想要解决的总体问题,而不是你目前如何解决问题。还要考虑创建并发布有效的[mcve]。 –

+1

想到几个问题,包括 - 为什么在JTable单元编辑器中使用KeyListener?通常有更好的方法来获取这些信息。另一个 - 你确定KeyListener的源是JTable而不是编辑器对象吗? –

回答

2

在编辑该单元格期间释放键时。

没有意义。当编辑单元格时,编辑器有焦点。用户也可以使用鼠标将单元置于编辑模式。

如果你想知道当一个细胞开始编辑,你可以添加一个PropertyChangeListenerJTable

// 
// Implement the PropertyChangeListener interface 
// 
    @Override 
    public void propertyChange(PropertyChangeEvent e) 
    { 
     // A cell has started/stopped editing 

     if ("tableCellEditor".equals(e.getPropertyName())) 
     { 
      if (table.isEditing()) 
       // code for editing started; 
      else 
       // code for editing stopped; 
     } 
    } 

然后你只需要使用getSelected...()方法来获取行/列。

+0

一个不太体面的问题一个体面的答案。 –

相关问题