![](/img/trans.png)
[英]Could someone help me understand how the ACCELERATOR_KEY works in 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.