Komponente auf JPanel wird bei setLayout (null) nicht angezeigt

Kann jemand sagen, warum die Combobox nicht angezeigt wird? Ich habe einen Controller:

public class TestController extends JPanel {

TestView cgView;

public TestController() 
{

    setLayout(null);

    cgView=new TestView();

    add(cgView);

}
public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
             JFrame fr = new JFrame("testt");
                fr.setSize(1200,1000);
                fr.setResizable(false);

                TestController cgc=new TestController();
                fr.setBackground(Color.white);
                fr.setVisible(true);

                fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                fr.add(cgc);

         }
        });
    }


}

Und eine Aussicht

public class TestView extends JPanel{
    private static final long serialVersionUID = 1L;

    public JComboBox<String> comboBox; 

    public TestView() {

          comboBox= new JComboBox<>(new String[] {"option1", "option2" });
          comboBox.setBounds(100,500, 100, 20);
          add(comboBox);

    }
}

DurchsetLayout (null) In TestController kann ich die ComboBox nicht sehen. Wenn ich hinzufügehinzufügen (cgView.comboBox) zu meinem TestContoller (), so dass es so aussieht:

public TestController() 
    {

        setLayout(null);

        cgView=new TestView();

        add(cgView);
        add(cgView.comboBox);

    }

Dann kann ich es sehen. Kann jemand sagen warum?

Meine Lösung besteht also darin, die Komponenten immer in TestController hinzuzufügen oder TestController als Attribut an TestView zu übergeben (in TestView () würde ich sie folgendermaßen hinzufügen: this.parentPanel.add (comboBox). Gibt es eine andere Lösung?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage