好的,我已经得到了这个带有屏幕的 JFrame。我已将大小设置为 800 x 800。但是创建的窗口小于该值。这不是任务栏的问题,因为它不是全尺寸的。
package sharph;
import java.awt.Dimension;
import javax.swing.JFrame;
public class Main extends JFrame {
public static String Title = "Game 1";
public static Dimension screenSize = new Dimension(800,800);
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setTitle(Title);
frame.setSize(screenSize);
frame.setLocationRelativeTo(null);
frame.setResizable(true);
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
Screen screen = new Screen();
screen.setSize(screenSize);
frame.add(screen);
frame.setVisible(true);
}
}
在 screen 类中,paint 方法在边框应该所在的位置周围绘制了一个框:
//Draw border
g.setColor(Color.RED);
g.drawRect(1, 1, 799, 799);
当我运行它时,窗口比框小,底部和右侧被切掉。
请注意我手动调整第二张图片的大小以显示边框差异。
我意识到我画的盒子每边都小了 1 个像素,但差异远不止 2 个像素。
最佳答案
发生这种情况是因为内容需要压缩到框架减去边框的大小。
结帐 this question和 this question更详细的解释
布局管理器还会覆盖您在 Screen
组件上设置的大小属性。无论哪种情况,您都应该覆盖 Screen
类的 getPreferredSize
方法
此外,您不应该依赖魔数(Magic Number)或关于组件实际大小的假设,而应该使用 getWidth
和 getHeight
(我知道,这只是为了演示目的)
关于java - 窗口大小小于应有的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16114834/