java GUI界面按钮激活问题。

我想把我的按钮按下去的时候执行线程,而且按下去之后按钮变灰,不可用。当线程执行完之后按钮变回可用。怎么设置?求指点!!!!... 我想把我的按钮 按下去的时候执行线程,而且按下去之后按钮变灰,不可用。当线程执行完之后按钮变回可用。怎么设置?求指点!!!! 展开
 我来答
skyyks0001
2011-07-18 · TA获得超过430个赞
知道小有建树答主
回答量:228
采纳率:100%
帮助的人:398万
展开全部
线程开始的时候执行button.setEnable(false)
线程执行完毕执行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;//线程计数器

}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式