Компонент на JPanel не отображается, когда setLayout (null)
Кто-то может сказать, почему поле со списком не отображается? У меня есть контроллер:
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);
}
});
}
}
И вид
public class TestView extends JPanel{
private static final long serialVersionUID = 1L;
public JComboBox comboBox;
public TestView() {
comboBox= new JComboBox(new String[] {"option1", "option2" });
comboBox.setBounds(100,500, 100, 20);
add(comboBox);
}
}
Потому чтоsetLayout (нуль) в TestController я могуне вижу comboBox. Если я добавлюдобавить (cgView.comboBox) в мой TestContoller (), так что это выглядит так:
public TestController()
{
setLayout(null);
cgView=new TestView();
add(cgView);
add(cgView.comboBox);
}
Чем я это вижу. Может кто-нибудь сказать почему?
Поэтому мое решение состоит в том, чтобы всегда добавлять компоненты в TestController или передавать TestController в качестве атрибута TestView (поэтому в TestView () я бы добавил их следующим образом: this.parentPanel.add (comboBox). Есть ли другое решение?