CheckerBoard JPanel

时间:2015-10-09 03:10:06

标签: java user-interface loops

我将它用于棋盘并将其连接到JPanel:

import javax.swing.*;
import java.awt.Graphics;
import java.awt.Color;

public class CheckerBoard extends JFrame
{

public void paint(Graphics g)
{
  int row;
  int col;
  int x;
  int y;

  for ( row = 0;  row < 9;  row++ )
  {
     for ( col = 0;  col < 8;  col++)
     {
        x = col * 22;
        y = row * 22;
         if ( (row % 2) == (col % 2) )
           g.setColor(Color.WHITE);
        else
           g.setColor(Color.BLACK);

        g.fillRect(x, y, 22, 22);
     }
  }
 }

这是Connceted JPanel:

import javax.swing.*;
import java.awt.Graphics;
import java.awt.Color;
public class JFRAME
{   public static void main() 
    {

        CheckerBoard check = new CheckerBoard();
        check.setTitle("CheckerBoard");
        check.setSize(180, 200);
        check.setDefaultCloseOperation(EXIT_ON_CLOSE);
        check.setVisible(true);
    }
}    

当我编译Jpanel时,它说“找不到符号变量EXIT_ON_CLOSE”

我试图制作一个8×8的棋盘,在显示之前提示用户输入棋盘的行数和列数。

3 个答案:

答案 0 :(得分:2)

EXIT_ON_CLOSE实际上是public static final int中定义的JFrame字段,这意味着您需要使用JFrame来引用它,例如JFrame.EXIT_ON_CLOSE

或者您可以将import static javax.swing.JFrame.EXIT_ON_CLOSE;添加到导入语句

更新...

正如Hovercraft指出的那样,你不应该覆盖paintJFrame顶级容器,这有很多原因,但它通常会随着应用程序复杂性的增加,给你带来很多麻烦。

相反,请先使用JPanel并覆盖它的paintComponent方法,确保先拨打super.paintComponent。然后,只需将其添加到您想要使用的容器中。

有关详细信息,请查看Performing Custom Painting

答案 1 :(得分:0)

欢迎来到SO。您尝试提供一些背景信息很好。但是,在这种情况下,答案似乎只是: 您需要WindowConstants.EXIT_ON_CLOSE而不仅仅是EXIT_ON_CLOSE

答案 2 :(得分:0)

应该{​​{1}}请不要打电话给你的班级JFrame.EXIT_ON_CLOSE,这只是搞砸了!