Компоненты JFrame не отображаются

Я пытаюсь добавить компоненты в JFrame, но когда я запускаю GameMenu.java, отображается только мой ImageIcon. Я создал экземпляр setVisible ();, в частности после. Я установил свой фрейм или добавил компоненты на панели или строки меню. Поэтому я не уверен, почему не отображаются никакие компоненты. Я думаю, это может быть связано с моим форматированием или основным методом.

Вот мои два класса:

GameMenu.java:

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.ImageIcon;
import javax.swing.JLabel;

public class GameMenu{

    public static void main(String[] args) {
        FrameCaller obj = new FrameCaller();
    }

}

class FrameCaller extends JFrame {

    public FrameCaller(){
        setLayout(new FlowLayout());
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        add(new JLabel(new ImageIcon("logo.png")));
        pack();
        setLocationRelativeTo(null);

        JMenuBar mb = new JMenuBar();
            JMenu m1 = new JMenu("Game List");
            JMenu m2 = new JMenu("Help");
            JMenu m3 = new JMenu("Stats");
                mb.add(m1);
                mb.add(m2);
                mb.add(m3);
        JMenuItem showRulesButton = new JMenuItem("View game rules");
        m2.add(showRulesButton);
        JMenuItem m77 = new JMenuItem("View past game stats");
        m3.add(m77);
        mb.setVisible(true);

        JPanel panel = new JPanel();
            JButton newGameButton = new JButton("New Game");
            newGameButton.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    new inGameFrame();
                    dispose();
                }
            });
        panel.add(newGameButton);

        panel.setVisible(true);
        setVisible(true);

    }




}

EightOff.java:

import javax.swing.*;



public class EightOff {

    public static void main(String[] args)
    {
        inGameFrame obj = new inGameFrame();
    }
}

    class inGameFrame extends JFrame
    {
        public inGameFrame() {
            setLayout(new FlowLayout());
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            pack();
            setLocationRelativeTo(null);
            setVisible(true);

        }


    }

Любые советы были бы замечательными. Спасибо.

1) Вы никогда не добавляете свои компоненты, особенно JMenuBar и JPanel, в ваш JFrame. Единственное, что вы правильно добавили, так это JLabel со значком. Поэтому вам нужно будет добавить как минимум setJMenuBar(mb) и add(panel). 2) Нет необходимости вызывать setVisible(true) для каждого отдельного компонента. Добавьте все компоненты в ваш JFrame и в конце вызовите pack() и setVisible(true) только на самом фрейме.

maloomeister 30.03.2021 08:39

Вы спасаете жизнь. Спасибо за содержательный комментарий, я вам очень признателен.

impend 30.03.2021 09:01

Не волнуйтесь. Учебное пособие по Java Swing обычно хорошее место для начала. Вы найдете информацию по всем основным темам, касающимся свинга, и все они включают в себя рабочие примеры для справки.

maloomeister 30.03.2021 09:04
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
18
0

Другие вопросы по теме