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

标签 java swing ubuntu

我是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/

相关文章:

java - 从给定角度获取屏幕边缘的坐标

java - Web 服务器上的 Jar 文件错误

java - 为什么我的 JLabel 没有显示?

python - 使用 nautilus 脚本获取突出显示文件的文件路径

sql - 无法在 ubuntu 的 postgresql 中创建数据库

ubuntu - 在 ubuntu 14.04 中安装 android studio 时出错?

java - 应用程序可以在 Eclipse 中调试/运行,但 .APK 在解析包含自定义 View 的 XML 布局时给出 .classNotFoundException

java - 将事物从 Array 更改为 ArrayList

java - 数据库连接期间的加载程序

java - 为什么我的 ChangeListener 只对 JMenu 有反应,而不对 JMenuItem 有反应?