2015-10-09 102 views
0

我有这样一个棋盘,我又把它连接到一个JPanel:棋盘的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棋盘,提示用于显示之前的行和基板的列的数量的用户。

+0

另外,不要直接在JFrame中而是在一个JPanel的paintComponent方法里面画。 –

回答

0

欢迎SO。你试图提供一些背景是很好的。然而,在这种情况下,答案似乎只是: 你需要WindowConstants.EXIT_ON_CLOSE,而不是仅仅EXIT_ON_CLOSE

+0

谢谢^〜^它固定它 – Selinnxox

+0

(请注意,每个答案http://stackoverflow.com/questions/7799940/jframe-exit-on-close-java,WindowConstants.EXIT_ON_CLOSE是首选到JFRAME.EXIT_ON_CLOSE但他们重新两者相同的整数)也...不能够解决你的问题,或者是有超越编译错误的另一个问题? – Foon

0

应该JFrame.EXIT_ON_CLOSE请不要叫你的类JFRAME,这只是搞砸了!

1

EXIT_ON_CLOSE实际上是JFrame定义的public static final int场,这意味着你需要使用JFrame引用它,就像JFrame.EXIT_ON_CLOSE

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

更新...

正如指出的气垫船,你不应该覆盖顶层容器paintJFrame,有很多的原因,但它通常会给你许多麻烦的您的应用程序复杂性增加。

取而代之的是,从JPanel开始并覆盖它的paintComponent方法,确保先拨super.paintComponent。然后,只需将其添加到您想要使用的任何容器中即可。

看一看Performing Custom Painting更多细节

+0

最佳答案。另外,她不应该直接在JFrame上绘图,因为她正在尝试这样做。 –

+1

@HovercraftFullOfEels谢谢,当我有更多的时间我会更新 – MadProgrammer