gpt4 book ai didi

java - 如何设置JPanel的宽高?

转载 作者:太空狗 更新时间:2023-10-29 22:55:09 25 4
gpt4 key购买 nike

我正在使用 Java 开发贪吃蛇游戏。板(所有操作发生的地方)的宽度和高度应固定(640 像素 * 480 像素)。

结构:

  • JFrame 类扩展的主类
  • JPanel 类扩展的
  • Board 类;

Main 类中,我有类似...

setSize( 1024, 768 );

...在 Board 类中我有...

setSize( BOARDS_WIDTH, BOARDS_HEIGHT );

问题是主窗口和唯一窗口似乎像 1024 * 768,但它里面的面板 - 不像 640 * 480。我也有 setBackground() 并且背景填充超过 640 * 480.

有什么方法可以使 Board 的宽度和高度像 640 * 480,但主窗口的宽度和高度 - 与 Board 的宽度和高度一样多是正确的吗?

现在看起来是这样的......

Width and height are ~1000 * ~750, not 640 * 480.

编辑:

所有作品......几乎。

主要类:

add( new Board(), BorderLayout.CENTER );
pack();
setResizable( false );
setLocationRelativeTo( null );
setVisible( true );
setDefaultCloseOperation( EXIT_ON_CLOSE );
setTitle( "Snake (by daGrevis)" );

类:

setPreferredSize( new Dimension( 640, 480 ) );

灰色背景是642 * 482!就像会有一个边框将全部包裹 1 个像素!

最佳答案

拜托,事情发生了 xxx*x,这根本不是真的,检查一下

JButton Size - java.awt.Dimension[width=400,height=40]
JPanel Size - java.awt.Dimension[width=640,height=480]
JFrame Size - java.awt.Dimension[width=646,height=505]

代码(来自 Trail: Creating a GUI With JFC/Swing 的基本内容,但我仍然认为那会过时)

编辑:忘记 setDefaultCloseOperation()

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class FrameSize {

private JFrame frm = new JFrame();
private JPanel pnl = new JPanel();
private JButton btn = new JButton("Get ScreenSize for JComponents");

public FrameSize() {
btn.setPreferredSize(new Dimension(400, 40));
btn.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
System.out.println("JButton Size - " + btn.getSize());
System.out.println("JPanel Size - " + pnl.getSize());
System.out.println("JFrame Size - " + frm.getSize());
}
});
pnl.setPreferredSize(new Dimension(640, 480));
pnl.add(btn, BorderLayout.SOUTH);
frm.add(pnl, BorderLayout.CENTER);
frm.setLocation(150, 100);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // EDIT
frm.setResizable(false);
frm.pack();
frm.setVisible(true);
}

public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {

@Override
public void run() {
FrameSize fS = new FrameSize();
}
});
}
}

关于java - 如何设置JPanel的宽高?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5921175/

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