面板和按钮已添加到框架中,但未出现在框架输出中。
import javax.swing.*;
import java.awt.*;
public class frameeg
{
public static void main(String s[])
{
JFrame frame = new JFrame("Frame eq");
JPanel panel = new JPanel(); //panel not working
panel.setLayout(new FlowLayout());
JLabel label = new JLabel("JFrame by example");
JButton button = new JButton();
button.setText("Button");
panel.add(label);
panel.add(button);
frame.add(panel);
frame.setLayout(null);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(200,300);
}
}
您决定使用null-layout
,这需要您指定内部所有元素的界限(setBounds(...)
),否则它将显示为width = 0
和height = 0
。
但是您不应该像null-layout
那样使用it's evil,并且在以不同的PLAF /屏幕尺寸/分辨率等运行程序时,会引起一些有趣的/奇怪的/难以解决的问题,例如this one。] >
为此,我建议您删除此行:
frame.setLayout(null);
替换此行:
frame.setSize(200,300);
为此:
frame.pack();
并在
main
方法的最后移动此行:
frame.setVisible(true);
并且不要忘记将程序放在EDT上(如链接的答案所示)