簡體   English   中英

有人可以幫助我了解 ImageIcon 如何適用於 java 嗎?

[英]Can someone help me understand how ImageIcon works for java?

因此,我有大約一年 5/12 個月的使用 java 的經驗,但我從來沒有能夠在骷髏之外制作任何東西。 如果有人可以幫助我了解如何使用 swing 使計算機中的圖像可見,我將不勝感激。

我已經在不同的網站之間尋找答案,但我嘗試過的示例代碼都沒有成功。 Stackoverflow 過去曾通過其他人提出的各種問題幫助學習 java,所以我自己創建了一個帳戶來提出問題。 我可能很愚蠢,但盡管我嘗試過,但我的形象從未出現過。 在之前放棄 swing 之后,我每隔幾個月就會回來嘗試理解它,雖然我覺得我掌握了一些基本概念,例如應該將某些東西設置為可見,如何制作/添加 JFrame 等,但它總是這讓我很困惑。

import javax.swing.*;
import java.awt.*;

public class Main extends JFrame {

public static void main(String[] args) {
        JFrame frame = new JFrame("main");
        frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
        ImageIcon ii = new ImageIcon("C:\\Users\\plasm\\IdeaProjects\\Shdo\\src\\mario.jpg");
        JLabel lable = new JLabel(ii);
        JScrollPane jsp = new JScrollPane(lable);
        frame.getContentPane().add(jsp);
        frame. setSize(1000, 700);
        JButton button = new JButton();
        button.setSize(new Dimension(300, 300));
        button.setLocation(500, 350);
        frame.getContentPane().add(button);

        frame.setVisible(true);

    }
}

上面的代碼是從https://www.daniweb.com/programming/software-development/threads/379864/add-image-and-button-to-jframe復制粘貼的,但是,它只顯示了一個基本白色 JFrame 在設定尺寸。

frame.getContentPane().add(jsp); // problem
frame. setSize(1000, 700);
JButton button = new JButton();
button.setSize(new Dimension(300, 300)); // does nothing
button.setLocation(500, 350); // does nothing
frame.getContentPane().add(button); //problem

問題是 JFrame 的內容窗格的默認布局管理器是 BorderLayout。 您正在嘗試將兩個組件添加到 BorderLayout 的 CENTER,這不起作用。 該按鈕取代了滾動窗格。

相反,您應該使用:

frame.getContentPane().add(jsp, BorderLayout.CENTER);
frame. setSize(1000, 700);
JButton button = new JButton("Testing");
frame.getContentPane().add(button, BorderLayout.PAGE_END);

閱讀有關布局管理器的 Swing 教程中的部分,以獲取更多信息和 BorderLayout 的工作示例。

如第一條評論所述。 不需要getContentPane() 框架會自動將組件添加到內容窗格中。

此外,在進行測試時,最好執行以下操作:

JLabel label = new JLabel("Icon label");
label.setIcon(ii);

這樣,如果您為圖像指定了錯誤的路徑,您至少會看到 label 的文本,並且您會知道問題出在路徑上,而不是布局代碼。

暫無
暫無

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

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