2016-12-24 52 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

一個不太體面的問題一個體面的答案。 –

相關問題