你是在JFrame上直接绘图了,所以(0,0)点是整个窗口的左上角,即标题栏的左上角,当然会把蓝色的正方形挡住了,建议在JFrame上加一个JPanel,然后在JPanel上绘图,注意:要将语句 setLayout(null);去掉,否则显示不出来图形。
至于最小化之后再放大,白色部分就会变为黑色的问题,在我的机器上没有出现。
代码:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Game{
public static void main(String[] args) {
GameFrame frame = new GameFrame();
}
}
class GameFrame extends JFrame // implements KeyListener
{
GameFrame() {
setBackground(Color.white);
setSize(600, 600);
setLocation(50, 50);
//setLayout(null);
setFocusable(true);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GamePanel panel=new GamePanel();
add(panel);
addKeyListener(new KeyAdapter() {
});
setVisible(true);
}
}
class GamePanel extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
int diameter = 50;
g.setColor(Color.red);
g.drawRect(250, 250, diameter, diameter);
g.setColor(Color.red);
g.drawRect(300, 300, diameter, diameter);
g.setColor(Color.red);
g.drawRect(250, 300, diameter, diameter);
g.setColor(Color.red);
g.drawRect(300, 250, diameter, diameter);
g.setColor(Color.blue);
g.fillRect(0, 0, 50, 50);
}
}