更換
label.setIcon(new ImageIcon("Green.png"));
通過
label.setIcon(new ImageIcon(YourMainClassName.class.getResource("Green.png")));
此代碼試圖加載相對於圖像你的項目,而不是目錄,你是從運行它。有關更多信息,請參閱Java教程中的How to Use Icons部分。
該代碼會變得更好,如果應用以下修補程序:
JFrame frame = new JFrame("Frame title");
frame.getContentPane().setLayout(new GridLayout(2, 3));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Moved below
// frame.pack();
// frame.setVisible(true);
JLabel label = new JLabel();
label.setIcon(new ImageIcon(YourMainClassName.class.getResource("Green.png")));
// Added items go to content pane directly
frame.getContentPane().add(label);
frame.getContentPane().add(new JButton("SPIN"));
// Moved from above
frame.pack();
frame.setVisible(true);
注意JFrame
不含時pack
是所謂的原代碼的內容,所以它會盡量減少窗口大小, setVisible
將首先顯示空幀。之後,當添加每個組件時,框架將需要重新佈局。
修正的代碼修正了這兩個問題:pack
將窗口大小調整爲實際內容,並且只需要一次佈局傳遞。
第二個變化是如何將組件添加到框架。最好將它們添加到框架內容窗格中,而不是直接添加到框架中。您可以在Java Tutorial的Using Top-Level Containers部分找到關於它的更多信息。
感謝您的幫助!有用! –