我的问题非常奇怪,在搜索和阅读代码40次后,我无法解释为什么jpanel和jframe的宽度和高度都会增加10个像素。
代码是:
public class Game extends JPanel implements Runnable {
public static final String NAME = "ALPHA !";
public static final int WIDTH = 600, HEIGHT = 400;
public static void main(String[] args) {
Game game = new Game();
game.setMinimumSize(new Dimension(WIDTH, HEIGHT));
game.setMaximumSize(new Dimension(WIDTH, HEIGHT));
game.setPreferredSize(new Dimension(WIDTH, HEIGHT));
game.setFocusable(true);
game.requestFocusInWindow();
JFrame frame = new JFrame(NAME);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(game, BorderLayout.CENTER);
frame.pack();
frame.setResizable(false);
frame.setAlwaysOnTop(true);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
game.startGame();
}
public void startGame() {
System.out.println("w " + getWidth() + ", h " + getHeight());
new Thread(this).start();
}
}
startGame方法中的println打印:
w 610, h 410
提前致谢。
答案 0 :(得分:0)
使用frame.setUndecorated(true)
然后您将了解为什么高度和宽度增加了10pxls。
答案 1 :(得分:0)
当我尝试将单个自定义JPanel添加到充当画布的JFrame时,我刚遇到此问题。我正在使用Java 8(更新231),但这仍然是一个问题。
我不知道为什么会这样。最后,可以通过在JFrame上的frame.setResizable(false)
之后调用frame.setVisible(true)
来解决此问题。
由于我在这里参加聚会很晚,我希望这也会对与此相关的人有所帮助。
祝你愉快
编辑:通过将frame.setResizable(false)
移到frame.pack()
之前,可以看到答案下方的注释暗示了相同的含义,效果也不错。很抱歉再次提出这个问题..:)