Java组件不显示+布局问题

1 java layout user-interface jpanel jframe

我有几个问题:

首先,也是最重要的一点,为什么你可以多次运行带有框架,几个面板,按钮等的GUI程序 - 不做任何改动 - 一半时间组件显示在框架中,另一半时间什么都没有显示......从字面上看,我在代码中没有任何改变,这是最令人沮丧的问题.有时出现的东西,有时没什么.我正在使用Eclipse,并且在main方法中只有以下代码.

其次,有人可以清楚地解释框架,面板和布局如何工作?

JFrame f = new JFrame();
f.setSize(400, 400);
f.setLayout(new BorderLayout());
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLocationRelativeTo(null);
f.setVisible(true);

JPanel p = new JPanel();
JButton alpha = new JButton();
JButton bravo = new JButton();
alpha.setLabel("Alpha");
bravo.setLabel("Bravo");
p.add(alpha, BorderLayout.WEST);
p.add(bravo, BorderLayout.EAST);
p.add(new JLabel("Charlie"), BorderLayout.SOUTH);
f.add(p);
Run Code Online (Sandbox Code Playgroud)

上面的方法有时会起作用,当它出现时,它并没有说明我从Oracle页面和教程中理解的方式.我创建了一个框架(没有默认布局),创建一个面板,其中两个按钮应该彼此相邻(WEST,EAST),然后在面板底部添加一个标签 - 并将整个面板添加到框架中.然而,它们都在框架的顶部彼此相邻地添加,居中.

你每个面板只能有一个组件吗?你可以在一个框架中添加多个面板,如果是这样,它们是否重叠?

仅供参考我观看了YouTube视频,并在此处阅读了其他一些帖子,似乎没有什么能够简单彻底地解释基础知识,所以我认为论坛帖子会得到更好的解释.

谢谢

Bra*_*raj 5

有时出现的东西,有时没什么

f.setVisible(true);添加完所有组件后,最后调用.


一些要点:

  1. 用于SwingUtilities.invokeLater()确保正确初始化EDT.

    阅读更多

  2. 打电话f.pack()而不是使用f.setSize(400, 400).

  3. JFrame默认情况下使用,BorderLayout所以不需要再次设置它.


我在这里观看了YouTube视频并阅读了其他一些帖子,似乎没有什么能够简单彻底地解释基础知识

请查看The Swing Tutorial的以下部分,以便更好地理解JFrameLayout详细示例: