Java 在给定坐标的所需位置放置JLabel
我有一个Java 在给定坐标的所需位置放置JLabel,java,swing,jpanel,jlabel,keylistener,Java,Swing,Jpanel,Jlabel,Keylistener,我有一个JPanel,其中我需要在所需的坐标处添加一堆JLabels。这些JLabels将为其分配键侦听器,这些侦听器将使用箭头键确定新位置 更具体地说,当只有一个JLabel时,我知道该怎么做,但每当我放更多的标签时,事情就会变得一团糟。当我使用箭头键时,第一个JLabel移动,但所有其他JLabel消失 有谁能给我一些提示,让我写一个方法,将JLabel放在一个特定的坐标中,并在以后使用箭头键移动它们,而不使其他JLabels消失 提前非常感谢我想您正在使用repaint()更新UI。顺便说
JPanel
,其中我需要在所需的坐标处添加一堆JLabel
s。这些JLabel
s将为其分配键侦听器,这些侦听器将使用箭头键确定新位置
更具体地说,当只有一个JLabel
时,我知道该怎么做,但每当我放更多的标签时,事情就会变得一团糟。当我使用箭头键时,第一个JLabel
移动,但所有其他JLabel
消失
有谁能给我一些提示,让我写一个方法,将JLabel
放在一个特定的坐标中,并在以后使用箭头键移动它们,而不使其他JLabel
s消失
提前非常感谢我想您正在使用
repaint()
更新UI。顺便说一句,您在哪个组件上调用repaint()
?我假设您正在使用repaint()
更新UI。顺便说一句,您在哪个组件上调用repaint()
?您可以尝试使用JDesktopPane或JLayeredPane,它的工作原理与jpanel相同,但您不会使用布局,使用这些布局您将使用边界,您始终必须像这样设置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 );
您可以尝试使用JDesktopPane或JLayeredPane,其工作原理与jpanel相同,但您不会使用布局,使用这些布局您将使用边界,您必须始终像这样设置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 );
我认为,您需要发布一些相关的代码片段。发布一篇文章,尝试将所有标签添加到列表中,并在箭头键事件循环中遍历列表并移动它们。如果您想自己移动每个标签,您应该实现某种“选择”方法来知道要移动哪个标签。发布代码的相关部分可以帮助我们。。。帮助:)我认为,您需要发布一些相关的代码片段。发布一篇文章,尝试将所有标签添加到列表中,并在箭头键事件循环中遍历列表并移动它们。如果您想自己移动每个标签,您应该实现某种“选择”方法来知道要移动哪个标签。发布代码的相关部分可以帮助我们。。。帮助您:)SwingWorker与OP想要什么有什么关系相应地进行了调整。我原以为UI上也发生了一些事情,但后来意识到它就像设计界面的画布。我没有使用repaint(),实际上我在netbeans上完成了我的项目,所以我只编写了移动JLabel的方法。在我添加另一个JLabel之前,它可以正常工作。
SwingWorker
与OP想要什么有什么关系?:)相应地进行了调整。我原以为UI上也发生了一些事情,但后来意识到它就像设计界面的画布。我没有使用repaint(),实际上我在netbeans上完成了我的项目,所以我只编写了移动JLabel的方法。在我添加另一个JLabel之前,它可以正常工作。