如何以 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 中。
pane.add(picLabel);
最后,在存储图像方面,您应该在项目中创建一个资源文件夹,如果您的类路径设置正确,那么您可以在类上使用 getResourceAsStream()
方法来获取图像.
关于java - 如何以gridbaglayout格式显示图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6132991/