Java JComboBox的实例

Java JComboBox的实例,java,swing,instance,jcombobox,Java,Swing,Instance,Jcombobox,我有一个问题,当一个实例Jcombox不是代码问题时(我想),只是当一个实例Jcombox时,我创建的按钮a在我的窗口中不可见,直到y调整窗口大小,它们出现 public class ventana extends JFrame { static JCheckBox ch1; static JCheckBox ch2; static JCheckBox ch3; static ButtonGroup bg; static JComboBox cb

我有一个问题,当一个实例Jcombox不是代码问题时(我想),只是当一个实例Jcombox时,我创建的按钮a在我的窗口中不可见,直到y调整窗口大小,它们出现

public class ventana extends JFrame {

        static JCheckBox ch1;
    static JCheckBox ch2;
    static JCheckBox ch3;
    static ButtonGroup bg;
    static JComboBox cb;
public static void main(String[] args) {

    JFrame jf = new JFrame("asd");
    jf.setVisible(true);
    jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    jf.setSize(200,320);
    jf.setLayout(new FlowLayout(FlowLayout.CENTER));
    ch1 = new JCheckBox();
    ch2 = new JCheckBox();
    ch3 = new JCheckBox();
    String [] x= {"1","2","3"};
    cb = new JComboBox(x);
    cb.addItem("Asdd");
    cb.addActionListener(e ->{

    });
    bg = new ButtonGroup();
    bg.add(ch1);
    bg.add(ch2);
    bg.add(ch3);

    jf.add(ch1);
    jf.add(ch2);
    jf.add(ch3);
    jf.add(cb);


}
}

注意:我也尝试使用JPanel,这是同样的问题,并且使用repaint()也是如此

注意:这个应用程序没有任何功能,我只是想知道如何解决这个问题


更新:要解决此问题,只需在末尾添加“jf.setVisible(true);”。

在添加所有组件后,将JFrame设置为可见

这是因为在将JFrame绘制到屏幕后添加组件(通过将visible设置为true),因此如果在添加组件后将visible设置为true,则它将使用添加的组件进行绘制

它仅在重新调整窗口大小后才会绘制的原因是,调整窗口大小会导致它再次绘制(正如注释中提到的@camickr,会导致布局管理器调用并定位元素,因为您没有给它们指定大小)

如果要在将JFrame设置为可见后重新绘制,也可以使用
jf.revalidate()
后跟
jf.repaint()

代码:

 JFrame jf = new JFrame("asd");
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setSize(200,320);
jf.setLayout(new FlowLayout(FlowLayout.CENTER));
ch1 = new JCheckBox();
ch2 = new JCheckBox();
ch3 = new JCheckBox();
String [] x= {"1","2","3"};
cb = new JComboBox(x);
cb.addItem("Asdd");
cb.addActionListener(e ->{

});
bg = new ButtonGroup();
bg.add(ch1);
bg.add(ch2);
bg.add(ch3);

jf.add(ch1);
jf.add(ch2);
jf.add(ch3);
jf.add(cb);
jf.setVisible(true); //This is where you want to set your JFrame to visible

哦谢谢你的工作!但为什么会出现这样的问题呢?我不太明白!更新为explaution.1+,@Raxor,当创建组件时,它的大小为(0,0),因此没有任何可绘制的内容。调整框架大小时,将调用布局管理器,并为组件指定适当的大小和位置。@chrisukhram,如果将组件添加到可见GUI,则需要用户重新验证()并重新绘制()。好的,我理解这一点,但是,我的意思是,为什么仅在我实例JComboBox时发生这种情况?。。。与复选框的工作刚刚好!不要对GUI组件使用静态变量。没有理由这样做。首先阅读Swing教程,了解结构更好的示例代码。