簡體   English   中英

組件未顯示在 Java Swing 中

[英]Components not showing up in Java Swing

我是 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。

我應該改變什么?

歡迎詹姆斯。 作為一個新的貢獻者,如果有幫助,請確保接受這個答案。

您構建代碼的方式會讓您非常頭疼。 首先,您應該從 Dashboard 類擴展 JFrame,然后使用 main 方法來實例化您的框架,然后使用構造函數 public 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);
}

}

希望這會有所幫助並祝你好運。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM