簡體   English   中英

將圖像添加到 label 時,JFrame 上沒有顯示圖像

[英]No image showing on JFrame when adding image to label

我已經編寫了一些代碼行,應該在 JFrame 中將圖像顯示為 label。 這是代碼。

ImageIcon image = new ImageIcon("funny.jpg");

JLabel label = new JLabel();
label.setIcon(image);

JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500,500);
frame.setVisible(true);
frame.add(label);

正如您在問題的評論中被提示的那樣,我認為您應該注意確保文件存在於指定位置,例如使用getResource

除此之外,您沒有將圖像的觀察者模式用於JLabel 嘗試將imageImageObserver設置為label ,如下所示:

ImageIcon image = new ImageIcon("funny.jpg");

JLabel label = new JLabel();
label.setIcon(image);
image.setImageObserver(label); // <-- Added this line.

JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500,500);
frame.setVisible(true);
frame.add(label);

否則,請參閱setImageObserver上的相應文檔

您也可以查看相應的教程部分

這恰好是因為,據我所知, ImageIcon使用MediaTracker異步加載圖像,因此當您構造ImageIcon的實例時,它將返回而不會首先阻塞,直到圖像完全加載。 設置ImageIconImageObserver將確保您提供的ImageObserver將在 state 更改時收到有關加載圖像的 state 的通知。 Component (它是一個ImageObserver )的默認實現會重新繪制自身,因此您將能夠在圖像准備好時看到完全加載的圖像。

作為替代方案,您始終可以使用ImageIO#read它將阻塞直到圖像完全加載到 memory (但它只會返回動畫 GIF 圖像中的單個)。

雖然我沒有測試它,但這是我經常遇到的一個問題,所以我認為它應該可以工作。 如果有或沒有,請告訴我。

暫無
暫無

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

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