2013-02-27 3 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

вы говорите, чтобы переместить метод внутри для цикла? –

+0

«экземпляр Lab3Label» класс должен расширять 'JLabel' вместо' JPanel'. не указан в коде, который 'Lab3Label' не распространяется на' JLabel' – GeneSys

+0

Спасибо за указание. Я уточню свой ответ. –

Смежные вопросы