Компоненты не отображаются в Java Swing - PullRequest
0 голосов
/ 09 января 2020

Я новичок в Java и Java GUI и у меня проблемы с Java Swing. В настоящее время у меня есть следующий код:

public class Dashboard  {

Dashboard() {
    JFrame screen = new JFrame();
    JPanel window = new JPanel();
    JLabel title = new JLabel();

    title.setText("dashboard");
    title.setBounds(400,200,100,100);
    title.setVisible(true);
    window.add(title);
    GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
    File xkcd = new File("./bin/gui/xkcd-script.ttf");
    Font xkcdscript;
    try {
        xkcdscript = Font.createFont(0, xkcd);
        ge.registerFont(xkcdscript);
        title.setFont(xkcdscript);
    } catch (FontFormatException | IOException e) {
        e.printStackTrace();
    }
    JMenuBar sidebar = new JMenuBar();


    window.setLayout(new FlowLayout());
    window.add(sidebar);
    window.add(title);

    screen.add(window);
    screen.setExtendedState(java.awt.Frame.MAXIMIZED_BOTH);
    screen.setVisible(true);
}

До того, как я добавил JPanel, у меня появилась боковая панель, но после добавления все мои элементы исчезли. Пока что ничего, что я пробовал, не помогло. Я использую Eclipse и Java13.

Что я должен изменить?

1 Ответ

0 голосов
/ 09 января 2020

Добро пожаловать, Джеймс. Как новый участник, пожалуйста, примите этот ответ, если он поможет.

То, как вы создаете свой код, может вызвать у вас сильную головную боль. Сначала вы должны расширить JFrame из вашего класса Dashboard, затем создать метод main для создания экземпляра вашего фрейма, а затем иметь конструктор publi c Dashboard (), куда вы можете добавить все свои компоненты.

Что-то вроде этого :

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

public class Dashboard extends JFrame {

private JPanel contentPane;

/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                Dashboard frame = new Dashboard();
                frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the frame.
 */
public Dashboard() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 450, 300);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    contentPane.setLayout(new BorderLayout(0, 0));
    setContentPane(contentPane);
}

}

Надеюсь, это поможет и удачи.

...