Overview:我正在使用Swing(Java)制作一个国际象棋游戏,在制作棋盘格图案时,我遇到了一个问题,即我用drawRect
创建的矩形在窗口启动后不久就消失了.
当我创建的矩形不在for
循环中时,这个问题不会发生,尽管我不确定为什么.
public class Main extends JPanel {
private static JFrame frame;
private static Container contentPanel;
private int rectX = 0;
private int rectY = 0;
// draw game textures
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
// draw chess board
for (int i = 1; i <= 64; i++) {
// light square
if (i % 2 != 0) {
g.drawRect(rectX, rectY, 100, 100);
rectX += 100;
}
// dark square
else {
g.fillRect(rectX, rectY, 100, 100);
rectX += 100;
}
// check if the row has ended
if (i % 8 == 0 && i != 0) {
rectX = 0;
rectY += 100;
}
}
}
// define preferred size
@Override
public Dimension getPreferredSize() {
return new Dimension(800, 800);
}
// create GUI
private static void createAndShowGui() {
Main main = new Main();
frame = new JFrame("Java Chess V1.0");
contentPanel = frame.getContentPane();
contentPanel.add(main);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}
我试着制作单独的矩形,而不是使用for
循环,这是可行的,但如果可能的话,我宁愿不要64行g.drawRect(...)
.