2

是否有一种方法可以清除 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 中的所有值。

4

2 回答 2

3

有两种方法

  1. 您的方式没有问题,但我建议您进行测试if (c instanceof JTextField) {,然后您可以在一个循环中为不同JComponents(或它们的组)重新设置(也不同)值

  2. 把期望放在JComponents某种类型的arrayor map,

  3. 注意删除(如果存在)DocumentDocumentListenerJTextComponent之前的所有内容中删除,然后在重新设置值之后,循环结束,然后将需要的侦听器添加回JTextComponent,以避免触发递归事件...

于 2012-08-05T13:45:32.617 回答
2

不,这是正确的做法,我不认为以这种方式清除它们的不利之处。

我正在考虑的唯一替代方法是通过实例化新的 UI 组件并重新布局它们来重新创建 GUI,但这似乎有点矫枉过正,它也会让你失去对旧组件的所有引用。

于 2012-08-05T13:33:24.423 回答