簡體   English   中英

為什么我的GUI沒有加載到構造函數上?

[英]Why isn't my GUI loaded on the constructor?

我有一個主類,有時會調用另一個類,其構造函數如下。

構造函數創建了GUI,我認為應該顯示它,但事實並非如此。 為什么會這樣呢?

public ModPackManager(){
    System.out.println("New modpackmanager");
    setUndecorated(true);
    setBounds(100, 100, 350, 87);
    getContentPane().setLayout(new BorderLayout());
    contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
    getContentPane().add(contentPanel, BorderLayout.CENTER);
    contentPanel.setLayout(null);
    {
        JLabel lblDownloadingModPack = new JLabel("Downloading and installing modpack, please wait...");
        lblDownloadingModPack.setHorizontalAlignment(SwingConstants.CENTER);
        lblDownloadingModPack.setBounds(10, 11, 330, 14);
        contentPanel.add(lblDownloadingModPack);
    }

    progressBar = new JProgressBar();
    progressBar.setBounds(10, 48, 330, 24);
    contentPanel.add(progressBar);

    label = new JLabel("0%");
    label.setHorizontalAlignment(SwingConstants.CENTER);
    label.setBounds(10, 29, 330, 14);
    contentPanel.add(label);
    try {
        installMods(getSelectedModPack());
    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

為什么會這樣呢?

嘗試setBounds(..) ,而不是使用布局(帶有填充和邊框)。

您從不顯示任何內容,只需對其進行設置。

雖然不是完全清楚您到底在做什么,或者您正在使用什么類(如果它是JFrame

pack();
setVisible(true);

您可能要在開發過程中setUndecorated(true) –這可能使看不到/發現的事情。 為了避免窗口管理器調整大小,這可能是最小的:

setMinimumSize(new Dimension(350, 200));

我不確定標簽周圍的亂碼是干什么用的。

假設ModPackManager是JFrame,則應該可以使用以下命令使其可見:

setVisible(true);

只需在構造函數中的其他代碼之后調用它即可。 讓我們知道怎么回事。

暫無
暫無

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

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