作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我真的迷失了:在这种情况下,单击按钮时按钮应可禁用 (btnStart.setEnable(false)
)。之后它应该调用位于另一个类中的函数。一切正常,除了 btnStart
不会在单击时禁用,而是在调用函数之后禁用。
所以这个:
@Override
public void actionPerformed(ActionEvent buttonKLick) {
if(buttonKLick.getSource() == this.btnStart){
btnStart.setEnabled(false);
try {
Funktionen.fileFinder(Pfad); //The Function
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
将调用函数FileFinder
并然后禁用该按钮,尽管该按钮之前应该被禁用。
最佳答案
您可能遇到了线程问题,您的其他方法需要花费时间并锁定 Swing 事件线程,从而阻止 Swing 正确地将按钮绘制为禁用状态。如果使用后台线程会发生什么?
即,
if(buttonKLick.getSource() == this.btnStart){
btnStart.setEnabled(false);
new Thread(new Runnable() {
public void run() {
try {
Funktionen.fileFinder(Pfad); //The Function
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}).start();
}
<小时/>
编辑:
请务必阅读:Lesson: Concurrency in Swing .
关于java - 调用函数时按钮不会禁用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20300640/
我是一名优秀的程序员,十分优秀!