如何以GridGagLayout
格式显示图像?
我正在制作纸牌游戏(确切地说是3张扑克牌)我设法显示像3张心中的牌名JLabel
等等,但我不知道如何显示图像( s)以及如何将其定位在我想要的位置..
JLabel label = new JLabel("Deal");
c.fill = GridBagConstraints.HORIZONTAL;
c.gridwidth = 3;
c.gridx = 0;
c.gridy = 2;
pane.add(label, c);
我应该在哪里存储图像文件,驱动器上的任何位置或项目文件夹中?
编辑: 嘿thx 我有点想象自己 但只是为了确保 我做到了 嘿thx 我有点想象自己 但只是为了确保 我做了:
card=new ImageIcon("G:\\CS3\\png cards\\Card Back.png");
c1 = new JLabel(card);
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 0.5;
c.gridx = 1;
c.gridy = 0;
pane.add(c1, c);
所以这确实显示了我想要的图像 它现在看起来很好用 所以这个编码有什么问题吗? 所以这确实显示了我想要的图像 它现在看起来很好用 这个编码有什么问题吗?
答案 0 :(得分:2)
查看java gridbag教程,了解如何布置项目http://download.oracle.com/javase/tutorial/uiswing/layout/gridbag.html
但基本概念是,当您添加组件时,它们会在网格上分配一个位置,并且可以在该网格中使用多个单元格。请注意,有时它可能很乏味。
在添加图像方面有几种方法,但可能我知道的最简洁的方法是创建一个BufferedImage,然后将该图像作为图像图标添加到jpanel:
InputStream imageStream = this.getClass().getResourceAsStream("resources/image.jpeg")
BufferedImage image = ImageIO.read(imageStream);
JLabel picLabel = new JLabel(new ImageIcon(image))
然后你有一个JLabel,它是一个图像,你可以将它添加到你的窗格。
pane.add(picLabel);
最后,在存储图像方面,您应该在项目中创建资源文件夹,如果您的类路径设置正确,那么您可以使用课程上的getResourceAsStream()
方法来获取图像。