有人可以告诉为什么组合框没有显示?我有一个控制器:
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<String> comboBox;
public TestView() {
comboBox= new JComboBox<>(new String[] {"option1", "option2" });
comboBox.setBounds(100,500, 100, 20);
add(comboBox);
}
}
由于 TestController 中的setLayout(null),我看不到组合框。如果我将add(cgView.comboBox) 添加到我的 TestContoller(),它看起来像这样:
public TestController()
{
setLayout(null);
cgView=new TestView();
add(cgView);
add(cgView.comboBox);
}
比我能看到的。有人能说出为什么吗?
所以我的解决方案是总是在TestController中添加组件,或者将TestController作为属性传递给TestView(所以在TestView()中我会像this.parentPanel.add(comboBox)一样添加它们。还有其他解决方案吗?