簡體   English   中英

簡單的Java GUI,沒有顯示卡

[英]Simple Java GUI, cards not appearing

import javax.swing.*;

public class SlideShow {
    JFrame slide = new JFrame("Slide Show");

    public SlideShow(){
        slide.setSize(300,400);
        slide.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        slide.setVisible(true);
        slide.setLocationRelativeTo(null);

        JPanel panel = new JPanel();
        JLabel label = new JLabel(new ImageIcon("Images/picture1"));
        panel.add(label);
        slide.add(panel);
    }

    public static void main(String[] args){
        SlideShow slide = new SlideShow();

    }
}

我必須創建一個顯示一些卡的簡單Java GUI。 首先,我只想顯示一張卡進行測試。 由於某種原因,我似乎無法弄清為什么什么也不顯示。

您實際上並沒有使用正確的文件名"Images/picture1" 文件格式應為"Images/picture1.png"

如果打算將圖像文件嵌入到程序中,通常也應該從類路徑中讀取圖像文件。 為此,您首先需要將文件放在類路徑中。 使用大多數IDE構建配置,就像將映像放在src一樣簡單。 所以

ProjectRoot
         src
            images
                  picture1.png

然后你會讀它像

new ImageIcon(getClass().getResource("/images/picture1.png"));

更好的方法是使用ImageIO.read() 如果文件路徑不正確,它將引發異常,因此您知道將要出錯的地方

Image image = ImageIO.read(getClass().getResource("/images/picture1.png"));
ImageIcon icon = new ImageIcon(image);

您需要將其放入try/catch塊中

添加組件后,還要執行codeNinja關於setVisible()內容。 還最好將框架pack()而不是setSize()

在將所有必需的組件添加到框架后,需要將其設置為可見。 移動slide.setVisible(true); 像下面這樣構造到底部:

...
slide.add(panel);
slide.setVisible(true);

或者,您可以添加slide.revalidate(); 在構造函數的底部。

暫無
暫無

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

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