我是java的新手.我只学习JPanel和JFrame.我从java软件解决方案中得到了这个说明:
"框架的包装方法根据其内容适当地设定尺寸 - 在这种情况下,框架的尺寸适合其所包含的面板的尺寸."
所以我写了这段代码:
public static void main (String [] args){
JFrame frame = new JFrame("test");
JPanel panel = new JPanel();
JLabel label1= new JLabel("");
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
//frame.setSize(1000, 500);
frame.getContentPane().add(panel);
Color darkBlue = new Color(8,40,94);
panel.setSize(1000, 500);
panel.setBackground(darkBlue);
}
Run Code Online (Sandbox Code Playgroud)
但它的结果是一个非常小的窗口,我应该用鼠标最大化它来查看内容但是当我设置框架大小时,每件事情都很棒!我使用Ubuntu.那么这个问题的原因是什么?
从您的代码顺序:
JFrame frame = new JFrame("test");
JPanel panel = new JPanel();
JLabel label1= new JLabel("");
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
Run Code Online (Sandbox Code Playgroud)
你之前没有在框架中添加任何东西pack().pack()意味着让框架根据添加到其中的组件决定其大小.
由于您之前没有添加任何组件,因此pack()您会收到一个内部没有任何内容的小窗口(直到您调整窗口大小).
调整框架大小时,将查询paintManager以绘制contentPane,因此如果在pack()之前添加,不仅框架将为您精心调整大小,其中的组件也将被绘制.
要查看JFrame中的组件:
public static void main (String [] args){
JFrame frame = new JFrame("test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
JLabel label1= new JLabel("");
panel.add(label1); //Add label to panel
frame.add(panel); //Add panel (with label) to frame
frame.pack(); //Let the frame adjust its size based on the added components
frame.setVisible(true);
}
Run Code Online (Sandbox Code Playgroud)