gpt4 book ai didi

java - 在 ActionEvent 期间更改标签

转载 作者:行者123 更新时间:2023-12-02 04:43:15 26 4
gpt4 key购买 nike

我试图在按下按钮时启用/禁用标签,并且我想在事件期间而不是事件之后执行此操作。正如您在下面看到的,我尝试启用/禁用两个标签:lblKeyboard 和 lblGamepad。

它们最终在“RemoteControl.run();”之后运行已执行,但我希望它在那之前发生。有什么办法可以做到这一点吗?

谢谢!

JButton btnGamepad = new JButton("Gamepad");
btnGamepad.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {

if(cont_state == 0){
if(RemoteControl.findGamePad() == true){
cont_state = 1;
game_status = "on";
}
else{
game_status = "off";
key_status = "on";
JOptionPane.showMessageDialog(null, "Controller not found!");
cont_state = 0;
}
}

if(cont_state == 1){

System.out.println("CONNECTED GAMEPAD!");
lblKeyboard.disable();
lblGamepad.enable();
frame.repaint();
RemoteControl.run();

cont_state = 0;
}

}
});

最佳答案

ActionEvents 在 EDT 上运行,EDT 还负责绘制。一旦更改标签状态,Swing 就会发出修复Label 的请求。问题是,该请求被发布到队列中,一旦 EDT 空闲,就会执行,并且如您所见,EDT 正忙于运行您的代码,因此无需重新绘制!根据代码的性质,您应该考虑使用 SwingWorker或者只是将 RemoteControl.run() 移动到另一个线程,如

new Thread(new Runnable() {
@override
public void run() {
RemoteControl.run();
}
}).start();

关于java - 在 ActionEvent 期间更改标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29932146/

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