如何将ShapeIcons添加到没有标签的JPanel?

时间:2014-10-19 23:45:30

标签: java swing jpanel jlabel

主要目标:将我制作的一些ShapeIcons添加到JPanel p1中,以便动画可以在整个JPanel p1中移动并且不会消失它们超出了创建标签的范围。

//下面是我将一个shapeIcon转换为标签,以便将其添加到Jpanel p1

final MoveableShape clock = new Clock(20,10, SHAPE_WIDTH);
final ShapeIcon clockIcon = new ShapeIcon(clock, ICON_WIDTH, ICON_HEIGHT);
final JLabel label3 = new JLabel(clockIcon);
...
p1.add(label3)

我的所有形状都添加到JPanel中,但是我让它们动画化并希望它们能够在整个面板中浮动,因为我只知道如何通过JLabel将它们添加到p1中,一旦超过标签边界,形状就会消失。 也许有办法通过JLabel以外的东西添加ShapeIcon?

2 个答案:

答案 0 :(得分:2)

如图所示here,您可以呈现Icon并将其显示在paintComponent()的实施中。由于动画表面不需要布局,请扩展JComponent。每个Icon可以是embedded-resource或运行时构造,例如ColorIcon。完整示例见KineticModel,引用hereSimpleBalls,引用here

答案 1 :(得分:2)

  

一旦超过标签边界,形状就会消失。

你不应该玩标签边界。标签的大小应该是形状的大小。

  

我让它们动画,并希望它们能够在整个面板中浮动,

然后应该通过更改面板上标签的位置来完成动画。

  

形状消失

然后,您需要检查标签相对于面板大小的位置。这是为了水平移动,X位置加上标签宽度不能超过面板的宽度。