Добавление панели из другого класса в фрейм

#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. Возможно, вам следует создать новый вопрос для этой ошибки, чтобы мы могли помочь больше