我的代码有什么问题?我只想在我的窗口中有一张图片......
//class ImagePanel:
public class ImagePanel extends JPanel {
private static final long serialVersionUID = -7664761101121497912L;
public Image i;
public ImagePanel(Image i) {
this.i = i;
}
@Override
public void paintComponents(Graphics g) {
super.paintComponent(g);
g.drawImage(this.i, 0, 0, null);
}
}
//class Main
public class Main extends JFrame {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setSize(1024, 768);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ImagePanel panel = null;
try {
panel = new ImagePanel(ImageIO.read(new File("D:/test.JPG")));
} catch (IOException e) {
e.printStackTrace();
}
frame.getContentPane().add(panel);
frame.setVisible(true);
}
}
只有一个没有图片的窗口:( 有什么问题?是否有一种简单的方法来设置窗口大小==图片大小?
谢谢!
答案 0 :(得分:5)
您必须覆盖paintComponent(Graphics g)
而不是paintComponent
s (Graphics g)
。
答案 1 :(得分:4)
最好的解决方案是使用JLabel。不要重新发明轮子。你不需要做自定义绘画。
但是如果你做自定义绘画,那么你需要将getPreferredSize()方法覆盖为图像的大小,以便布局管理器可以完成它们的工作。
答案 2 :(得分:3)
请阅读有关Icon in Swing的本教程,并将您的图片放入JLabel,但与JPanel
具有相同的方式/功能答案 3 :(得分:0)
我一点都不熟悉Java窗格,但是在将它添加到内容窗格之前,不需要设置ImagePanel的大小。