1

如何以GridGagLayout格式显示图像?

我正在制作纸牌游戏(准确地说是 3 张纸牌扑克) 我设法将卡片名称显示为 3 of Hearts 之类的JLabel,但我不知道如何显示图像以及如何定位它我想喜欢的地方。。

JLabel label = new JLabel("Deal");
c.fill = GridBagConstraints.HORIZONTAL;
c.gridwidth = 3;
c.gridx = 0;
c.gridy = 2;
pane.add(label, c);

我应该将图像文件存储在驱动器上的任何位置还是项目文件夹中?

编辑:嘿,谢谢,我自己想明白了,但只是为了确保我做到了:

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);

所以这确实显示了我想要的图像,现在看起来工作正常所以这个编码有什么问题吗?

4

1 回答 1

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()类上的方法来获取您的图像。

于 2011-05-26T02:31:21.250 回答