首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取Gridlayout坐标

如何获取Gridlayout坐标
EN

Stack Overflow用户
提问于 2010-03-15 17:15:09
回答 1查看 2.3K关注 0票数 0

我将我的JPanel设置为GridLayout (6,6),尺寸为(600,600),网格的每个单元格将显示不同宽度和高度的图片。首先将图片添加到JLabel,然后将JLabel添加到单元格。

如何检索单元格中图片的坐标而不是单元格的坐标?到目前为止,我们给出了这些高度和宽度相等的坐标,即使在屏幕上,图片也以不同的大小显示。

例如:

代码语言:javascript
复制
java.awt.Rectangle[x=100,y=100,width=100,height=100]
java.awt.Rectangle[x=200,y=100,width=100,height=100]
java.awt.Rectangle[x=300,y=100,width=100,height=100]

我使用GridLayout而不是gridBagLayout的原因是,我希望每个图片都有边界。如果我使用GridBagLayout,网格将根据图片大小扩展。我希望网格大小为固定大小。

代码语言:javascript
复制
JPanel pDraw = new JPanel(new GridLayout(6,6));
pDraw.setPreferredSize(new Dimension(600,600));

for (int i =0; i<(6*6); i++)
{           
   //get random number for height and width of the image
   int x = rand.nextInt(40)+(50);
   int y = rand.nextInt(40)+(50);   

   ImageIcon icon = createImageIcon("bird.jpg");    

   //rescale the image according to the size selected
   Image img = icon.getImage().getScaledInstance(x,y,img.SCALE_SMOOTH);         
   icon.setImage(img ); 
   JLabel label = new JLabel(icon);
   pDraw.add(label);    
}

for(Component component:components)
{
   //retrieve the coordinate
   System.out.println(component.getBounds());
}

编辑:我已经尝试过了,但不起作用:-(

代码语言:javascript
复制
for(Component component: pDraw.getComponents()){
  System.out.println(((JLabel)component).getIcon());
}

怎样才能得到这样的输出呢?

代码语言:javascript
复制
java.awt.Rectangle[x=300,y=100,width=50,height=40]
java.awt.Rectangle[x=400,y=400,width=60,height=50]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-03-15 17:25:17

您的图像是否以所需的大小显示?

我也这么想。

不管怎么说,从你的代码看,我猜它得到的是标签的大小,而不是图标的大小。与任何JComponent一样,JLabel实际上是容器实例。因此,它们的大小取决于约束。因此,在GridLayout中,图标将具有单元格的大小,而所包含的JLabel将具有图像的大小。

因此,要获得图像大小,您必须调用((JLabel) component).getIcon()才能检索有效的图像尺寸。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2446011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档