将JLabel放置在给定坐标的所需位置

时间:2012-05-15 03:36:41

标签: java swing jpanel jlabel keylistener

我有JPanel我需要在所需坐标处添加一堆JLabel s。这些JLabel将为其分配关键侦听器,这些侦听器将使用箭头键确定新位置。

更具体地说,当只有一个JLabel时,我知道怎么做,但每当我把更多的东西弄得乱七八糟。当我使用箭头键时,第一个JLabel移动,但所有其他JLabel消失。

任何人都可以给我一些提示来编写一个方法来将JLabel置于特定坐标中,并且稍后使用箭头键移动它们而不会使其他JLabel消失吗?

非常感谢提前

2 个答案:

答案 0 :(得分:1)

您可以尝试使用JDesktopPane或JLayeredPane,它的工作原理与JPanels相同,但您不会使用布局,使用Bounds,您总是必须设置这样的jlabel的边界。

JLabel label = new JLabel("Hello");
label.setBounds(0, 0, 100, 20);
//label.setBounds(x, y, width, height);
pane.add(label)

如果您需要移动该标签,那么您可以使用类似

的内容
int xx = label.getBounds().getX();
int yy = label.getBounds().getY();
int ww = label.getBounds().getWidth();
int hh = label.getBounds().getHeight();

//to the right 10 units
xx+=10;
label.setBounds( xx, yy, ww, hh );

答案 1 :(得分:0)

我假设您正在使用repaint()来更新UI。顺便说一下,你打电话给哪个组件repaint()