Java 监听器需要什么来检测JTable单元格是否被双击,从而切换到编辑模式?
双击Swing中的可编辑JTable单元格时,该单元格将进入某种“编辑模式”,其中会出现插入符号,单元格周围会出现轮廓。我的问题是,我需要使用什么样的侦听器来检测编辑模式的更改 明确地说,我不是在寻找检测单元格值何时更改的侦听器,也不是在寻找双击侦听器,而是在双击可编辑单元格时发生的初始切换到编辑模式 那么,这个变化的监听器叫什么?它是否存在,或者我是否需要修改其他侦听器Java 监听器需要什么来检测JTable单元格是否被双击,从而切换到编辑模式?,java,swing,jtable,Java,Swing,Jtable,双击Swing中的可编辑JTable单元格时,该单元格将进入某种“编辑模式”,其中会出现插入符号,单元格周围会出现轮廓。我的问题是,我需要使用什么样的侦听器来检测编辑模式的更改 明确地说,我不是在寻找检测单元格值何时更改的侦听器,也不是在寻找双击侦听器,而是在双击可编辑单元格时发生的初始切换到编辑模式 那么,这个变化的监听器叫什么?它是否存在,或者我是否需要修改其他侦听器 谢谢,您需要将鼠标侦听器添加到表对象。在mousePressed()方法中,检查单击计数是否为2。这应该可以解决您的问题 y
谢谢,您需要将鼠标侦听器添加到表对象。在mousePressed()方法中,检查单击计数是否为2。这应该可以解决您的问题
yourTable.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
JTable table =(JTable) e.getSource();
Point p = e.getPoint();
int row = table.rowAtPoint(p);
if (e.getClickCount() == 2) {
}
}
});
您可以使用MouseClick事件查找单击次数 示例代码
jtable.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent me) {
JTable table =(JTable) me.getSource();
if (me.getClickCount() == 2) {
int row = target.getSelectedRow();
int column = target.getSelectedColumn();
// add your logic here based on which row and column
}
}
});
这可能会有帮助。要了解更多详细信息,最好的方法是侦听属性“tableCellEditor”。因此,您可以轻松获取已激活/停用的编辑器
table.addPropertyChangeListener("tableCellEditor", new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getNewValue() == null) {
// editing stopped
} else {
// editing started
}
}
};
if(e.getClickCount()==2){
而不是if(me.getClickCount()==2){
;)这在某些情况下可能会起作用,但同时有时单元格可以编辑,有时不可以,所以双击并不一定保证我进入了编辑模式。只做一个onEditMode监听器似乎会“更干净”,但我想我要找的监听器可能根本不存在不要当心,单元格编辑器可以更改编辑的方式和时间,因此它们不总是可以通过双击来编辑-这意味着可以通过按enter键或甚至单个键来激活click@MadProgrammer是的,这是非常不一致的,并没有真正达到我想要的,只是小心,细胞编辑器c一个改变,如何和何时变成可编辑的,所以他们不总是成为可编辑的双击-这意味着,可以通过按下回车键,甚至一个单一的点击激活完美,这正是我想要实现的效果,非常感谢!