Java 图像赢得';不会出现在JFrame上
这是我的代码:Java 图像赢得';不会出现在JFrame上,java,swing,jframe,jpanel,Java,Swing,Jframe,Jpanel,这是我的代码: import java.awt.BorderLayout; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; public class SenzuView extends JFrame { JLabel label; public SenzuView(){ ImageIcon ima
import java.awt.BorderLayout;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class SenzuView extends JFrame {
JLabel label;
public SenzuView(){
ImageIcon image = new ImageIcon("C:\\senzu.jpg");
label = new JLabel("", image, JLabel.CENTER);
this.add(label);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setExtendedState(JFrame.MAXIMIZED_BOTH);
this.setVisible(true);
}
public static void main(String[] args) {
new SenzuView();
}
}
问题是框架打开了,但是它是空的,并且图像从未出现
提前感谢我建议您在项目目录中创建一个名为images的文件夹。然后给出如下路径:
ImageIcon image=newimageIcon(“images/senzu.jpg”)代码>
这会奏效的
如果需要绝对路径,请使用
C:/Program Files/workspace/Senzu/images/Senzu.jpg
希望它能解决您的问题。我建议您使用getClass.getResource
,因为这样,如果您以后想将项目编译成.jar文件,则图像将随项目一起出现,否则,如果您遵循最初开始的解决方案路径,图像将不会出现
- 在主类所在的包中创建一个文件夹。最好叫“res”
- 将图像移动到该软件包
- 按如下方式初始化图像图标:
ImageIcon image = new ImageIcon(getClass().getResource("res/senzu.jpg"))
- 以下是我建议您如何对
SenzuView
进行编码的示例:
public SenzuView(){
setLayout(new BorderLayout());
ImageIcon image = new ImageIcon(getClass().getResource("res/senzu.jpg"));
label = new JLabel(image);
this.add(label, BorderLayout.CENTER);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setExtendedState(JFrame.MAXIMIZED_BOTH);
setVisible(true)
}
我希望这解决了问题,并为您提供了一些其他有用的提示。您确定该文件存在吗?代码在我运行时显示图片。您可能需要将标签添加到BorderLayout.CENTER
以便自动调整其大小。您可以查看JavaDoc以了解更多信息。我还建议使用ImageIO.read
将图像加载到ImageIcon
(直接)上,有关更多详细信息,请参阅下一票是什么?我检查了代码,它运行并显示图像。请解释一下。顺便说一句-还不是投票人,但我看不出这个答案如何为解决方案添加任何有用的东西。我也用jpeg检查过,它是有效的。不添加任何有用的解决方案意味着什么?我认为给出一个解决问题的答案就足够了。谢谢。“给出一个解决问题的答案”很明显,你有信心这些建议会提供解决方案,但这并不能使它成为现实。第一个建议是从路径中剥离根驱动器并使其相对。完整的驱动器+路径总是比相对路径更“可靠”。第二个建议返回到建议与原始路径或文件名不相似的完整路径。那怎么能解决问题呢?谢谢你提供的信息,先生。我会记住这一点