gpt4 book ai didi

Java-计时器递增时对象的重新定位

转载 作者:行者123 更新时间:2023-11-30 02:55:00 26 4
gpt4 key购买 nike

我有一个带有两个按钮的 JFrame。单击其中一个按钮时,会将另一个按钮(形状)从当前位置移动(btnMove)到另一个位置。我使用线程作为计时器以秒为单位进行计数,但每次计数器递增时,按钮都会移回其原始位置.

    public class FrameTh extends JFrame {

class count extends Thread {

public int p = 0;

public void run() {
for (int i = 1; i < 100; i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
System.out.println(e);
}

lblCounter.setText("Seconds: " + i);

}
}

}
count t1 = new count();
private void formWindowActivated(java.awt.event.WindowEvent evt) {

t1.start();


}

private void btnMoveActionPerformed(java.awt.event.ActionEvent evt) {
shape.setLocation(23, 44);


}

最佳答案

核心问题是您正在与布局管理 API 作斗争,当您调用 setText 时,它会导致容器失效并转发

您可能会考虑使用诸如JLayeredPane之类的东西,但请记住,您对组件的大小和位置负全部责任

您遇到的另一个问题是您违反了 Swing 的单线程性质,Swing 不是线程安全的,这意味着您不应该从事件调度线程之外更新 ui。

要解决该特定问题,您应该使用 Swing Timer 而不是线程,请参阅 How to use Swing Timers了解更多详情

关于Java-计时器递增时对象的重新定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37514293/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com