好吧所以我有这个带有屏幕的JFrame。我已将大小设置为800乘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);
}
}
在屏幕类中,paint方法在边框应该是的位置绘制一个框:
//Draw border
g.setColor(Color.RED);
g.drawRect(1, 1, 799, 799);
当我运行时,窗口小于盒子,底部和右侧被切断。
请注意我手动调整大小的第二张图片以显示边框差异。
我意识到我已经在每侧绘制了1个像素的小盒子,但差异远远超过2个像素。
答案 0 :(得分:5)
这是因为内容需要挤压到框架的大小减去它的边界。
结帐this question和this question以获取更详细的说明
布局管理器还会覆盖您在Screen
组件上设置的size属性。在任何一种情况下,您都应该覆盖getPreferredSize
类
Screen
方法
此外,您不应该依赖关于组件实际大小的幻数或假设,而应该使用getWidth
和getHeight
代替(我知道,它只适用于示范目的)
答案 1 :(得分:1)
取代" screen.setSize(screenSize);" type" screen.setPreferredSize(screenSize);"然后输入" frame.setVisible(true);"输入" frame.pack()"。你也可以删除" frame.setSize(screenSize);"如果你愿意的话。