如何使用ImageIcon导入图像?

时间:2014-05-30 00:33:45

标签: java image swing

这是我的代码,我显然遇到了两个问题:

package test;

import javax.swing.ImageIcon;
import javax.swing.JPanel;
import java.awt.Component;

public class something {
public static void main(String[] args) {
    ImageIcon icon = new ImageIcon("src/icon.png",("What a great image"));

    JPanel window = new JPanel();
    window.setLocation(100,100);
    window.setSize(300, 500);
    window.setVisible(true);

}

所以我不知道为什么JPanel不会透露自己,我是否正确导入图像?我已经创建了图标并将其放在SRC文件夹中。如果我没有正确导入,那么我该如何导入呢?这个问题也适用于图形摆动,因为我很快就有兴趣学​​习。

2 个答案:

答案 0 :(得分:1)

  

所以我不知道为什么JPanel不会透露自己

您没有将它添加到任何可以显示的内容中。 JPanel只是一个普通容器,允许您在其上添加其他组件。

您需要某种Window来实际显示此容器,例如......

JPanel window = new JPanel();

JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(window);
frame.setSize(200, 200);
frame.setLocationRelativeTo(null);
frame.setVisible(true);

阅读How to Make Frames (Main Windows)了解更多详情

  

我已经创建了图标并将其放在SRC文件夹中。如果我是   没有正确导入它,我该如何导入呢?

这是一个复杂的问题,因为您已将图像添加到src目录,它会更改图像加载方式的上下文。从本质上讲,它成为一种嵌入式资源。

所以不要使用......

 ImageIcon icon = new ImageIcon("src/icon.png",("What a great image"));

你需要使用更像......

的东西
 ImageIcon icon = new ImageIcon(something.getClass().getResource("icon.png"),("What a great image"));

代替

您可以通过How to Use LabelsCreating a GUI With JFC/SwingInitial ThreadsLaying Out Components Within a ContainerReading/Loading an Image提供阅读

答案 1 :(得分:0)

JPanel只能放在像JFrame这样的重量级组件上,如果你查看一些基本的Swing教程,你就可以获得GUI的基本布局。或者,您可以使用GUI创建者,例如随NetBeans IDE提供的GUI创建者。 要添加图像,您需要执行类似

的操作
BufferedImage myPicture = ImageIO.read(new File("path-to-file"));
JLabel picLabel = new JLabel(new ImageIcon(myPicture));
add(picLabel);