java GUI界面按钮激活问题。
我想把我的按钮按下去的时候执行线程,而且按下去之后按钮变灰,不可用。当线程执行完之后按钮变回可用。怎么设置?求指点!!!!...
我想把我的按钮 按下去的时候执行线程,而且按下去之后按钮变灰,不可用。当线程执行完之后按钮变回可用。怎么设置?求指点!!!!
展开
1个回答
展开全部
线程开始的时候执行button.setEnable(false)
线程执行完毕执行button.setEnable(true)就行了
线程执行完毕执行button.setEnable(true)就行了
追问
private void jbBeginActionPerformed(java.awt.event.ActionEvent evt){
jbBegin.setEnabled(false);
new Thread(){....}.start();
new Thread(){....}.start();
new Thread(){....}.start();
jbBegin.setEnabled(true);
}
我这样子写不行诶
追答
不是这样....这样相当于你的按钮禁用以后就立刻启用了
因为三个线程开始的那部分执行后会立刻执行jbBegin.setEnabled(true);这句
要在线程结束的位置来做
给你写个范例
package zhidao;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class ThreadTest extends JFrame implements ActionListener {
public ThreadTest() {
button = new JButton("click!");
button.addActionListener(this);
this.add(button);
this.pack();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void enableButton() {
threadCount--;
if (threadCount == 0) {
button.setEnabled(true);
}
}
public static void main(String[] args) {
new ThreadTest().setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
button.setEnabled(false);
new CountingThread(20).start();
new CountingThread(10).start();
new CountingThread(15).start();
threadCount = 3;
}
private class CountingThread implements Runnable {
private final int secToCount;
public CountingThread(int secToCount) {
this.secToCount = secToCount;
}
public void start() {
new Thread(this).start();
}
@Override
public void run() {
try {
for (int i = 1; i <= secToCount; i++) {
System.out.println(Thread.currentThread().getName()
+ " has been running for " + i + " sec!");
Thread.sleep(1000);
}
enableButton();//线程结束时调用激活按钮方法
} catch (InterruptedException e) {
e.printStackTrace(System.err);
}
}
}
private JButton button;
private int threadCount = 0;//线程计数器
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询