Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在给定坐标的所需位置放置JLabel_Java_Swing_Jpanel_Jlabel_Keylistener - Fatal编程技术网

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之前,它可以正常工作。