gpt4 book ai didi

java - JFrame 的 pack() 方法不起作用(java,ubuntu)

转载 作者:行者123 更新时间:2023-12-02 14:52:27 25 4
gpt4 key购买 nike

我是java新手。我刚刚学习JPanel和JFrame。我从java软件解决方案中得到了这个注释:

" The pack method of the frame sets its size appropriately based on its contents—in this case the frame is sized to accommodate the size of the panel it contains."

所以我写了这段代码:

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);
}

但结果是一个非常小的窗口,我应该用鼠标最大化它来查看内容但是当我设置帧大小时,一切都很好!我使用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();

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);
}

关于java - JFrame 的 pack() 方法不起作用(java,ubuntu),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35819598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com