清除Swing组件值

时间:2012-08-05 13:30:52

标签: java swing jtextfield jtextcomponent

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

2 个答案:

答案 0 :(得分:3)

有两种方式

  1. 您的方式没有任何问题,但我建议您测试if (c instanceof JTextField) {,然后您可以在一个JComponents(或其组)中重新设置(差异)值环

  2. 将所需的JComponents放入某种类型的arraymap

  3. 注意之前删除(如果有)DocumentDocumentListener来自所有JTextComponent,然后重新注册值,循环结束,然后将所需的侦听器添加回{{1 },以避免触发重新发生的事件...

答案 1 :(得分:2)

不,这是正确的方法,我没有看到以这种方式清除它们的缺点。

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