如何显示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 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()
方法来获取图像。