当前位置: 首页 > 知识库问答 >
问题:

JFrame不能准确显示指定的宽度和高度值吗?

彭华皓
2023-03-14

我正在用Java开发一个简单的2D游戏。

我正在使用JFrame类,但是我不认为宽度和高度是我指定的,或者图形不正确。

下面是我的一些代码片段:

public final static int WIDTH = 600, HEIGHT = 900;
JFrame frame = new JFrame();
frame.setSize(WIDTH, HEIGHT);
g.setColor(Color.BLACK);
g.fillRect(0, 0, WIDTH, HEIGHT - 10);

JFrame显示黑色背景。然而,根据我给fillRect函数的参数,框架底部仍然应该有一条10px高的白色长条。事实并非如此。白色的银条只有在从框架高度降低30像素后才真正开始显示。

谢谢你的帮助。

共有1个答案

郗缪文
2023-03-14

JFrame大小包括边框,因此需要考虑它们。为了便于处理,请不要指定JFrame的宽度和高度。我建议你做以下几点。

JFrame frame = new JFrame();
JPanel panel = new JPanel();
panel.setPreferredSize(new Dimension(width,height));
frame.add(panel);
// add other components in the panel
frame.pack();
// center on screen.
frame.setLocationRelativeTo(null);
frame.setVisible(true);

现在您的面板将是指定的大小。

注意,如果你要画画,一定要覆盖JPanel中的paintComponent(Graphics g),然后在那里画画。

@Override
public void paintComponent(Graphics g) {
   super.paintComponent(g);
   // your code here
}
 类似资料:
  • 我有一个字体对象,我需要字体的宽度和高度。我知道getSize()返回字体的高度,因为字体的点号通常是高度,但在确定字体的宽度时,我不知所措。 或者,能够确定字体支持的每个特定字符的宽度也是一个可接受的解决方案。 我的最佳猜测是,宽度是在使用loadFont方法时指定的,但文档没有指定size参数是表示字体的宽度还是高度。 使用的所有字体都是单空格字体,如DejaVu Sans mono、GNU

  • 问题内容: 抱歉,我一直在搜索此论坛,但没有确切答案。所以我问自己的。 我有一堂课,用目标纵向屏幕640x960显示glView和webview两种布局。我计划拆分布局。因此我的背景看起来是在(0,0,640,480)或纵向屏幕的一半处绘制的。,我想在(0,481,640,479)处绘制我的Web视图,该视图占据了从中间到底部的另一半。但是,我失败了,无法弄清楚如何实现我想要的布局。如何设置web

  • 问题内容: html CSS 我想在我将display:inline属性添加到css中后,立即以其原始高度和宽度(在css中设置)并排显示两个div,它似乎失去了先前定义的高度和宽度。[用#1和#2检查divs似乎松动了高度和宽度设置] 有人可以指出我似乎正在做的错误或此怪异行为的解决方法吗? 问题答案: 内联对象没有高度或宽度。为什么要先将它们设置为内联?您可能想要浮动它们或使用它们。

  • 我如何才能使它的应用程序是优化的所有屏幕?

  • 我的一个程序中的java类遇到了一个奇怪的问题。谢天谢地,我能够使用示例取自Oracle网站: https://docs.oracle.com/javase/tutorial/displayCode.html?code=https://docs.oracle.com/javase/tutorial/uiswing/examples/components/FrameDemoProject/src/c

  • 主要内容:1. width,2. height,3. max-width 和 max-height,4. min-width 和 min-heightCSS 尺寸属性指的就是元素的宽度和高度属性,虽然说非常简单,但却是必须掌握的技能。CSS 中提供了 width、height、max-width、min-width、max-height 和 min-height 等几个属性来设置元素的宽度和高度,这些元素使用起来非常简单,下面我们就来简单介绍一下。 1. width 通过 width 属性可以设