2015-10-09 103 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