是否有方法可以清除Swing组件的值。例如,如果我们每次想要清除它时都使用JTextField,我必须调用 - txtField.setText("")
。我曾经为这类案件制定了一种实用方法 -
public static void clearFields(JComponent[] components) {
for (int i = 0; i < components.length; i++) {
JTextComponent jComponent = (JTextComponent) components[i];
jComponent.setText("");
}
}
我想知道Swing API本身是否有更好的方法。或者是否有办法刷新JPanel中的所有值。
答案 0 :(得分:3)
有两种方式
您的方式没有任何问题,但我建议您测试if (c instanceof JTextField) {
,然后您可以在一个JComponents
(或其组)中重新设置(差异)值环
将所需的JComponents
放入某种类型的array
或map
,
注意之前删除(如果有)Document
或DocumentListener
来自所有JTextComponent
,然后重新注册值,循环结束,然后将所需的侦听器添加回{{1 },以避免触发重新发生的事件...
答案 1 :(得分:2)
不,这是正确的方法,我没有看到以这种方式清除它们的缺点。
我正在考虑的唯一替代方法是通过实例化新的UI组件并重新发布它们来重新创建GUI,但它似乎有点过分,它也会让你失去对旧的所有引用。