#java #class #jframe #jpanel
#java #класс #jframe #jpanel
Вопрос:
У меня есть 3 класса. Предполагается, что окно класса должно содержать и настраивать компоненты GUI. Я хочу добавить панель в фрейм, но приведенный ниже код, похоже, не работает. Это сообщение об ошибке компиляции:
Ошибка: не удается найти символ
символ: переменная getPanel
местоположение: переменная MyPanel типа Panel
class Window {
Frame myFrame = new Frame();
Panel myPanel = new Panel();
void run() {
myFrame.build();
myPanel.build();
}
public static void main(String[] args) {
(new Window()).run();
}
}
class Frame {
JFrame frame;
Panel myPanel = new Panel();
void build() {
frame = new JFrame("Frame");
frame.add(button, BorderLayout.SOUTH);
frame.add(myPanel.getPanel); //compilation error: cannot find symbol
frame.setSize(500, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
class Panel extends Frame {
private JPanel panel;
void build() {
panel = new JPanel();
}
public JPanel getPanel() {
return panel;
}
}
Итак, как мне добавить панель в фрейм?
Ответ №1:
Вы пытаетесь вызвать метод getPanel()
, но вы пытались вызвать его простым вводом getPanel
.
Вам не хватает круглой скобки, что указывает на то, что вы вызываете метод, а не просто обращаетесь к переменной.
Измените эту строку:
frame.add(myPanel.getPanel);
для этого:
frame.add(myPanel.getPanel());
Кроме того, в будущем обязательно включайте все сообщение об ошибке, а не только те фрагменты, которые вы считаете важными. Это поможет нам быстро найти проблему и, следовательно, сможет помочь вам раньше.
Комментарии:
1. Спасибо, это работает! Однако теперь у меня возникла новая проблема. Новое сообщение об ошибке, которое я получаю после запуска: java.lang. Ошибка StackOverflowError на панели. <инициализация>(RandomArtist.java:40) в фрейме. <инициализация> (RandomArtist.java:25) на панели. <инициализация>(RandomArtist.java:40) в фрейме. <инициализация>(RandomArtist.java:25)
2. Возможно, вам следует создать новый вопрос для этой ошибки, чтобы мы могли помочь больше