这是我的代码,我显然遇到了两个问题:
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文件夹中。如果我没有正确导入,那么我该如何导入呢?这个问题也适用于图形摆动,因为我很快就有兴趣学习。
答案 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 Labels,Creating a GUI With JFC/Swing,Initial Threads,Laying Out Components Within a Container,Reading/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);