get text from dynamically added jPanel

前端 未结 2 811
别跟我提以往
别跟我提以往 2020-12-12 05:36

I am adding dynamically subPanel to jPanel1 (with jTextField and jButton). Some of part code was borrowed from there.

2条回答
  •  天涯浪人
    2020-12-12 05:56

    Problem is: You are iterating over the children of jPanel1:

    jPanel1.getComponents();
    

    And expect there to be a JTextField:

    if (children[i] instanceof JTextField){
         String text = ((JTextField)children[i]).getText();
         System.out.println(text);
    }
    

    But since you have added subPanels to jPanel1, the children of jPanel1 are subPanels, not JTextFields!

    So, in order to access the JTextFields, you'll have to iterate over the children of the subPanels in a second for-loop!

    Example:

    Component[] children = jPanel1.getComponents();
    // iterate over all subPanels...
    for (Component sp : children) {
        if (sp instanceof subPanel) {
            Component[] spChildren = ((subPanel)sp).getComponents();
            // now iterate over all JTextFields...
            for (Component spChild : spChildren) {
                if (spChild instanceof JTextField) {
                    String text = ((JTextField)spChild).getText();
                    System.out.println(text);
                }
            }
        }
    }
    

提交回复
热议问题