我有JPanel
我需要在所需坐标处添加一堆JLabel
s。这些JLabel
将为其分配关键侦听器,这些侦听器将使用箭头键确定新位置。
更具体地说,当只有一个JLabel
时,我知道怎么做,但每当我把更多的东西弄得乱七八糟。当我使用箭头键时,第一个JLabel
移动,但所有其他JLabel
消失。
任何人都可以给我一些提示来编写一个方法来将JLabel
置于特定坐标中,并且稍后使用箭头键移动它们而不会使其他JLabel
消失吗?
非常感谢提前
答案 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()
?