JTable自定义单元格渲染器焦点问题

时间:2011-09-01 06:34:36

标签: java swing user-interface jtable tablecellrenderer

我有一张这样的桌子。第二列使用JTextField渲染器,第三列使用基于JPasswordField的渲染器和编辑器。

enter image description here

看起来不错。但问题是我们必须输入值并且必须点击“ENTER”。在该图像中,我输入了密码,但未按Enter键。所以,如果我点击'保存&关闭'按钮,它会显示密码字段为空的错误。

以前我在JTabbedPane下只使用过JTextFields和JPasswordFields,但效果很好。当我不得不添加越来越多的东西时,我把它改成了这样的表。

现在我已经贴了一个标签让人们知道他们应该点击进入..这不太好。另一个大问题。在Nimbus的Atleast外观和感觉,我们得知这个领域仍然是焦点。在Windows系统外观中,无论字段是否聚焦,都没有太多明显的区别。

enter image description here

当我点击“保存并放大”时,我需要用户名字段或密码字段来设置它的值关闭'按钮。请帮帮我。

2 个答案:

答案 0 :(得分:7)

所以你的问题是,你还在编辑单元格。所以你必须停止编辑,然后更改单元格。

在您的按钮上,您可以获得正在编辑的单元格  TableCellEditor cellEditor = table.getCellEditor();
然后你可以用
停止编辑 if(cellEditor!=null){
cellEditor.stopCellEditing();
}

然后你可以保存值

答案 1 :(得分:6)

告诉表在失去焦点时自动提交:

table.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);