Java 如何使用循环清除jframe的所有文本字段?

Java 如何使用循环清除jframe的所有文本字段?,java,swing,jframe,jtextfield,jtextarea,Java,Swing,Jframe,Jtextfield,Jtextarea,我正在使用NetBeans开发Java应用程序。我在JFrame中有5个JTextFields和2个JTextArea。我想使用循环立即清除它们。如何操作?迭代所有组件,并将所有JTextField和JTextArea对象的文本设置为空字符串: //Note: "this" should be the Container that directly contains your components //(most likely a JPanel). //This won't work if yo

我正在使用NetBeans开发Java应用程序。我在
JFrame
中有5个
JTextFields
和2个
JTextArea
。我想使用循环立即清除它们。如何操作?

迭代所有组件,并将所有
JTextField
JTextArea
对象的文本设置为空字符串:

//Note: "this" should be the Container that directly contains your components
//(most likely a JPanel).
//This won't work if you call getComponents on the top-level frame.
for (Component C : this.getComponents())
{    
    if (C instanceof JTextField || C instanceof JTextArea){

        ((JTextComponent) C).setText(""); //abstract superclass
    }
}

合适的代码应该是这个

    Component[] components = jframe.getContentPane().getComponents();
    for (Component component : components) {
        if (component instanceof JTextField || component instanceof JTextArea) {
            JTextComponent specificObject = (JTextComponent) component;
            specificObject.setText("");
        }
    }

在JFrame上使用
.getContentPane().getComponents()
,以获取其子项的数组。迭代该数组,并对每个项检查TextComponent的instanceOf,如果是,请调用
setText(null)
我很抱歉说得含糊不清。对getComponents()的调用应该在包含所有组件的JPanel上进行,而不是在顶层框架上,其add(Component)方法实际上将组件添加到JRootPane内部嵌套的JPanel中(因此其getComponents()方法将只返回JRootPane)。我已经测试过这个方法,效果非常好。没有得到它。它不工作,只返回JRootPane。我在JFrame上试过这个。。。有什么建议吗?Component[]components=jframe.getRootPane().getComponents()@qwfddq正如我在上面的注释中所解释的,您需要在已添加组件的容器上调用
getComponents()
。这不应该是顶层框架。