如何以gridbaglayout格式显示图像?

问题描述 投票:1回答:1

如何显示GridGagLayout格式的图像?

[我正在制作纸牌游戏(准确地说是3张纸牌扑克),我设法将3张红心之类的纸牌名称显示为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);

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

java image gridbaglayout
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()方法来获取图像。

© www.soinside.com 2019 - 2024. All rights reserved.