我想用java swing做一个非常简单的事情,我无法做到。
我添加了一个jLabel,因为它是唯一一个使用java swing来保存图像的对象(使用icon属性)...至少我无法使用其他对象设置图像。
现在我想在第一个顶部添加另一个jlabel和另一个图像,以便可以独立于“背景”标签“点击”它。但每当我尝试使用图形编辑器或通过执行jLabel1.add(jLabel2)添加它时,它都不起作用......它只是设置在label1旁边但不在其上面。
这是为了做一个像Tic Tac Toe游戏这样的java应用程序......所以我可以得到正方形(第一个标签)和其他“X”和“O”的背景。
这可能是董事会,我想在每个广场上放置标签,以便它们可以成为碎片。
答案 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
布局元素,他们会将它们排列在网格中,从而强制使用相同的尺寸。