2013-02-27 151 views
0

我正在寫一個硬幣翻轉課程。我有一個問題讓文本居中在每個網格中。網格佈局爲3 x 3,但每個網格中的文本「H」或「T」是左對齊的。這是創建網格的代碼。編譯錯誤:「找不到符號」

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 

class Lab3Panel extends JPanel { 

    Lab3Panel() { 
     setLayout(new GridLayout(3, 3, 1, 1)); 

     Lab3Label[] label = new Lab3Label[9]; 
     label.setHorizontalTextPosition(SwingConstants.CENTER); 
     label.setVerticalTextPosition(SwingConstants.CENTER); 

     for (int i = 0; i < 9; i++) { 
      label[i] = new Lab3Label(i); 
      add(label[i]); 
     } 
    } 
} 

我得到的錯誤是:

Lab3Panel.java:15: error: cannot find symbol label.setHorizontalTextPosition(SwingConstants.CENTER); 
               ^

回答

5

你調用數組對象setHorizontalTextPosition方法,而你應該在它的一個條目來調用它。

喜歡的東西:label[0].setHorizontalTextPosition

但是爲了能夠編譯上述聲明的類Lab3Label必須從一個它的超類定義或繼承的方法setHorizontalTextPosition

我覺得這是你所需要的:

Lab3Label[] label = new Lab3Label[9]; 
for (int i = 0; i < 9; i++) { 
    label[i] = new Lab3Label(i); 
    label[i].setHorizontalTextPosition(SwingConstants.CENTER); 
    label[i].setVerticalTextPosition(SwingConstants.CENTER); 
    add(label[i]); 
} 
+0

你說移動的方法的內部進行循環? – 2013-02-27 01:12:54

+0

「'Lab3Label'實例類應該擴展'JLabel'而不是'JPanel'。」沒有在代碼中提到'Lab3Label'沒有從'JLabel'延伸 – GeneSys 2013-02-27 01:24:28

+0

謝謝指出。我會更新我的答案。 – 2013-02-27 01:26:35