gpt4 book ai didi

java - setPreferredSize 不起作用

转载 作者:搜寻专家 更新时间:2023-10-31 08:23:38 24 4
gpt4 key购买 nike

代码:

import java.awt.Dimension;

import javax.swing.*;

public class Game extends JFrame {
private static final long serialVersionUID = -7919358146481096788L;
JPanel a = new JPanel();
public static void main(String[] args) {
new Game();
}
private Game() {
setTitle("Insert name of game here");
setLocationRelativeTo(null);
setLayout(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
a.setPreferredSize(new Dimension(600, 600));
add(a);
pack();
setVisible(true);
}
}

所以我将 JPanel 的首选大小设置为 600 x 600 并打包框架,但框架的大小仍然是 0 x 0。

为什么会这样,我该如何解决?

最佳答案

如您所说,pack() 将尝试安排窗口,以便每个组件都调整到其首选大小。

问题是布局管理器似乎是试图安排组件及其各自的 preferredSizes 的那个。但是,当您将布局管理器设置为 null 时,没有人负责。

尝试注释 setLayout(null) 行,您将看到结果。当然,对于一个完整的窗口,您将不得不选择并设置一个有意义的 LayoutManager

这对我来说很好:

import java.awt.Dimension;

import javax.swing.*;

public class Game extends JFrame {
private static final long serialVersionUID = -7919358146481096788L;
JPanel a = new JPanel();
public static void main(String[] args) {
new Game();
}
private Game() {
setTitle("Insert name of game here");
setLocationRelativeTo(null);
//setLayout(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
a.setPreferredSize(new Dimension(600, 600));
add(a);
pack();
setVisible(true);
}
}

关于java - setPreferredSize 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11939028/

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