Java 正在JTable中编辑的单元格的位置
我想获得Java 正在JTable中编辑的单元格的位置,java,swing,jtable,Java,Swing,Jtable,我想获得JTable单元格的坐标(行索引和列索引),在编辑该单元格时释放键。我正试图这样做: @Override public void keyReleased(KeyEvent released) { JTable tbl = (JTable)(released.getSource()); if (tbl.getCellEditor() != null) System.out.println(tbl.getSelectedRow()+","+tbl.getSel
JTable
单元格的坐标(行索引和列索引),在编辑该单元格时释放键。我正试图这样做:
@Override
public void keyReleased(KeyEvent released) {
JTable tbl = (JTable)(released.getSource());
if (tbl.getCellEditor() != null)
System.out.println(tbl.getSelectedRow()+","+tbl.getSelectedColumn());
}
但这不会返回正在编辑的单元格的位置(行索引和列索引)。请帮忙
在编辑该单元格时释放键时
没有道理。编辑单元格时,编辑器具有焦点。用户还可以使用鼠标将单元格置于编辑模式
如果您想知道单元格何时开始编辑,可以在JTable
中添加PropertyChangeListener
:
//
// 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…()
方法来获取行/列。这是一个奇怪的请求,至少对我来说,您可能会问一个问题,当最佳解决方案可能是使用完全不同的方法时,您会问如何解决特定的代码问题。考虑告诉我们你想解决的总体问题,而不是你现在试图解决的问题。还要考虑创建和发布一个有效的几个问题,包括——为什么在一个JTabl单元编辑器中使用密钥侦听器?通常有更好的方法来获取这些信息。另一个--您确定KeyListener的源是JTable而不是editor对象吗?对于一个不太体面的问题,这是一个体面的答案。