更换
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部分找到关于它的更多信息。
感谢您的帮助!有用! –