2011-05-26 113 views
1

如何以GridGagLayout格式显示图像?我做了一个纸牌游戏(准确地说是3张纸牌扑克)我设法显示像Hearts这样的卡牌名称作为JLabel以及什么都不是,但我不知道如何显示图像和我该如何定位它,我想喜欢..如何以gridbaglayout格式显示图像?

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

哎THX 我还挺找出自己 但只是为了确保 我做 卡=新的ImageIcon( “G:\\ \\ CS3 PNG卡\\卡Back.png”); \t \t c1 = new JLabel(card); \t \t c.fill = GridBagConstraints.HORIZONTAL; \t \t c.weightx = 0.5; \t \t c.gridx = 1; \t \t c.gridy = 0; \t \t pane.add(c1,c); – J13t0u 2011-05-26 02:44:46

+0

这样做意味着您必须拥有G中的图像:这意味着您可能在自己以外的计算机上运行此操作时遇到问题。 – Dimitar 2011-05-26 05:15:19

回答

2

看看java的网格包教程上如何布局项目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()方法来获取图像。

+0

没有必要创建一个BufferedImage。您可以直接从图像文件创建一个图标。请参阅“如何使用图标”一节,了解如何将图像文件直接读入图标。 – camickr 2011-05-26 02:40:30