创建一个完全黑色的窗口后,右边和底边都有白色。我可能做错了什么?
这是我初始化窗口的构造函数: -
public Panel()
{
Thread t = new Thread(this);
addKeyListener(this);
setFocusable(true);
this.setPreferredSize(new Dimension(gameWidth, gameHeight));
JFrame f = new JFrame("AlienBusters");
f.add(this);
f.pack();
f.setLocationRelativeTo(null);
f.setResizable(false);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
t.start();
}
这是我将窗口变黑的绘画方法: -
@Override
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.setColor(Color.BLACK);
g.fillRect(0, 0, gameWidth, gameHeight);
}
答案 0 :(得分:2)
五件事......
setResizable
之后调用pack
,不是一个好主意,setResizable
可以更改框架边框大小,这会影响可用内容大小...... KeyListener
,请How to Use Key Bindings并保存自己的头痛...... g.fillRect(0, 0, gameWidth, gameHeight);
应为g.fillRect(0, 0, getWidth(), getHeight());
或更好,只需使用setBackground(Color.BLACK)
并通过super.paintComponent
免费获取... {和{ {1}}应为paintComponent
;)protected
。这意味着可以改变尺寸,这可能不是你真正想要的。相反,请改写setPreferredSize
。有关详细信息,请参阅Should I avoid the use of set(Preferred|Maximum|Minimum)Size methods in Java Swing?