JLabel在另一个JLabel中

时间:2010-05-05 23:39:24

标签: java

我想用java swing做一个非常简单的事情,我无法做到。

我添加了一个jLabel,因为它是唯一一个使用java swing来保存图像的对象(使用icon属性)...至少我无法使用其他对象设置图像。

现在我想在第一个顶部添加另一个jlabel和另一个图像,以便可以独立于“背景”标签“点击”它。但每当我尝试使用图形编辑器或通过执行jLabel1.add(jLabel2)添加它时,它都不起作用......它只是设置在label1旁边但不在其上面。

这是为了做一个像Tic Tac Toe游戏这样的java应用程序......所以我可以得到正方形(第一个标签)和其他“X”和“O”的背景。

board

这可能是董事会,我想在每个广场上放置标签,以便它们可以成为碎片。

2 个答案:

答案 0 :(得分:0)

您可能希望将标签设置为使用GridLayout。然后,您可以将其他JLabel组件添加到九个单元格中的每一个。当有人点击标签时,您可以将图标设置为您想要的任何内容。

答案 1 :(得分:0)

您可以轻松地对JLabel进行子类化,并使用以下内容覆盖整个public void paint(Graphics g)

public void paint(Graphics g)
{
  Graphics2D g2 = (Graphics2D)g;

  // antialiasing, just because it's nicer
  g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); 

  g2.drawRect(..); // or instead
  g2.drawImage(..); // if you really want a border as an image

  g2.drawImage(..); // to draw the symbol in the middle


}

否则,您可以使用JLabel设置BorderFactory的边框(关注网格单元格之间的间距),并将图像设置在中间。

要使用GridLayout布局元素,他们会将它们排列在网格中,从而强制使用相同的尺寸。

相关问题