我试图通过使用Imageicon在jframe上绘制图像。但是当我运行它时它只是空白。继承我的代码......
public final class PICS
{
public static final void main(String... aArgs)
{
JFrame frame = new JFrame("IMAGE");
frame.setVisible(true);
frame.setSize(500,500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ImageIcon image = new ImageIcon("image/pic1.jpg");
JLabel label = new JLabel("", image, JLabel.CENTER);
JPanel panel = new JPanel(new BorderLayout());
panel.add( label, BorderLayout.CENTER );
}
}
我对包括本网站在内的所有java都很新,所以如果我遗漏了一些内容,我会道歉。我也使用Eclipse,是否有可用于图像的特定格式,或者是否有大小限制?
答案 0 :(得分:2)
两件事。
首先,在您构建框架及其内容之后,将setVisible
作为最后一次调用...即
JFrame frame = new JFrame("IMAGE");
frame.setSize(500,500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ImageIcon image = new ImageIcon("image/pic1.jpg");
JLabel label = new JLabel("", image, JLabel.CENTER);
JPanel panel = new JPanel(new BorderLayout());
panel.add( label, BorderLayout.CENTER );
// Make me last
frame.setVisible(true);
二,确保image/pic1.jpg
存在,并且是当前执行上下文下的目录image
。
如果图片是嵌入式资源(位于Jar或您的应用程序中),那么您需要为图片提供URL
而不是String
ImageIcon
对待String
{1}}作为文件名......
ImageIcon image = new ImageIcon(PICS.class.getResource("image/pic1.jpg"));
例如。
我建议您使用JFrame#pack
而不是JFrame#setSize
,因为它会将框架调整为您内容的首选尺寸......
我还建议您花点时间阅读Code Conventions for the Java Programming Language,Initial Threads。
我还鼓励您使用ImageIO而不是ImageIcon
,因为如果出现问题,至少会抛出Exception
更新,测试图片路径
尝试将此添加到PICS
类的构造函数中。这将至少告诉你图像不在哪里......
try {
ImageIO.read(PICS.class.getResource("image/pic1.jpg"));
} catch (IOException ex) {
System.out.println("Not in image/pic1.jpg");
}
try {
ImageIO.read(PICS.class.getResource("/image/pic1.jpg"));
} catch (IOException ex) {
System.out.println("Not in /image/pic1.jpg");
}
try {
ImageIO.read(PICS.class.getResource("resources/image/pic1.jpg"));
} catch (IOException ex) {
System.out.println("Not in resources/image/pic1.jpg");
}
try {
ImageIO.read(PICS.class.getResource("/resources/image/pic1.jpg"));
} catch (IOException ex) {
System.out.println("Not in /resources/image/pic1.jpg");
}
答案 1 :(得分:2)
我对包括本网站在内的所有内容都很陌生
然后我建议你先阅读教程,特别是Swing tutorial。也许How to Use Icons
部分可能是一个很好的起点。示例代码将向您展示如何使用Icons以及如何构建程序,以便在EDT上执行GUI代码。关于并发的教程将解释为什么EDT很重要。