我有一个JTable。目前我有以下代码:
table.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 1) {
JTable target = (JTable)e.getSource();
int row = target.getSelectedRow();
int value = Integer.parseInt( (String) table.getValueAt(row, 0));
int x = 0,y=0;
if (row==1) {x=582;y=483;} else if (row==2) {x=221;y=575;} else if (row==3) {x=231;y=435;}
boundaryFill4(x, y, value, 50);
my.setIcon(new ImageIcon(buffered));
}
}
});
但是我需要让我的JTable在用户输入新值时自动更新。鼠标监听器并不能完全符合我的要求。当用户将光标指向JTable单元时,它会更新。我在文档中找不到任何“输入值更新”监听器。
我可以使用keyListener,但在这种情况下我需要添加一个“UPDATE”JButton,但我需要JTable在没有JButton的情况下自动更新。
第三种方法是创建无限更新循环:while(true){// update} 但这需要大量的计算机内存......而且效率不高。
有人可以推荐我如何改进我的代码,或者任何人都可以更正上面的MouseListener。谢谢!
答案 0 :(得分:2)
如How to Use Tables所示,您可以通过选择构建TableModel
的方式来使每个单元格都可编辑。要控制单个单元格,请覆盖isCellEditable()
中的TableModel
。如果您仍有问题,请修改您的问题以包含显示您所选方法的sscce。
附录:我很好奇是否有“输入”监听器。
您可能正在寻找TableCellEditor
,here和here。