Java 如何启用命令按钮
我在java swing程序中使用了3个命令按钮,如读取、停止和退出。 如果单击“读取”按钮,则在读取文件之前,所有3个按钮都不会处于启用状态。Java 如何启用命令按钮,java,swing,events,jbutton,Java,Swing,Events,Jbutton,我在java swing程序中使用了3个命令按钮,如读取、停止和退出。 如果单击“读取”按钮,则在读取文件之前,所有3个按钮都不会处于启用状态。 如果我单击“停止”按钮,我需要您的帮助来创建这些按钮以启用和停止阅读操作。请注意,Swing是一个构建在多线程平台之上的单线程框架。 因此,在执行长时间运行的任务时,不应使用 希望Swing已经包含了执行如此长时间运行的工作所需的所有内容 创建一个单独的线程来读取您的文件 完成后,调用方法根据文件内容刷新UI 请注意,Swing是构建在多线程平台之上的
如果我单击“停止”按钮,我需要您的帮助来创建这些按钮以启用和停止阅读操作。请注意,Swing是一个构建在多线程平台之上的单线程框架。 因此,在执行长时间运行的任务时,不应使用 希望Swing已经包含了执行如此长时间运行的工作所需的所有内容
请注意,Swing是构建在多线程平台之上的单线程框架。 因此,在执行长时间运行的任务时,不应使用 希望Swing已经包含了执行如此长时间运行的工作所需的所有内容
对于“读取”按钮,对于像这样的ex set操作:
private void ReadButtonActionPerformed(java.awt.event.ActionEvent evt) {
ReadButton.setEnabled(false);
StopButton.setEnabled(false);
ExitButton.setEnabled(false);
}
private void StopButtonActionPerformed(java.awt.event.ActionEvent evt) {
ReadButton.setEnabled(true);
StopButton.setEnabled(true);
ExitButton.setEnabled(true);
}
对于停止按钮:设置如下操作:
private void ReadButtonActionPerformed(java.awt.event.ActionEvent evt) {
ReadButton.setEnabled(false);
StopButton.setEnabled(false);
ExitButton.setEnabled(false);
}
private void StopButtonActionPerformed(java.awt.event.ActionEvent evt) {
ReadButton.setEnabled(true);
StopButton.setEnabled(true);
ExitButton.setEnabled(true);
}
要停止阅读操作,请执行以下操作:
将读取操作设为线程(在读取按钮中),然后在(停止按钮)中停止此线程
例如:
class Read extends Thread {
public void run() {
//////////////Read action
}
}
- 读取=新读取()
- 然后在ReadButtonActionPerformed:read.start()强>
- 在StopButtonActionPerformed中:读取.stop()强>
private void ReadButtonActionPerformed(java.awt.event.ActionEvent evt) {
ReadButton.setEnabled(false);
StopButton.setEnabled(false);
ExitButton.setEnabled(false);
}
private void StopButtonActionPerformed(java.awt.event.ActionEvent evt) {
ReadButton.setEnabled(true);
StopButton.setEnabled(true);
ExitButton.setEnabled(true);
}
对于停止按钮:设置如下操作:
private void ReadButtonActionPerformed(java.awt.event.ActionEvent evt) {
ReadButton.setEnabled(false);
StopButton.setEnabled(false);
ExitButton.setEnabled(false);
}
private void StopButtonActionPerformed(java.awt.event.ActionEvent evt) {
ReadButton.setEnabled(true);
StopButton.setEnabled(true);
ExitButton.setEnabled(true);
}
要停止阅读操作,请执行以下操作:
将读取操作设为线程(在读取按钮中),然后在(停止按钮)中停止此线程
例如:
class Read extends Thread {
public void run() {
//////////////Read action
}
}
- 读取=新读取()
- 然后在ReadButtonActionPerformed:read.start()强>
- 在StopButtonActionPerformed中:读取.stop()强>
导入java.awt.BorderLayout;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入javax.swing.JButton;
导入javax.swing.JDialog;
导入javax.swing.JFrame;
导入javax.swing.JLabel;
导入javax.swing.JPanel;
导入javax.swing.JProgressBar;
导入javax.swing.SwingWorker;
公共类易货测试{
私有静态最终长serialVersionUID=1L;
私有静态JProgressBar progressBar;
公共静态void main(字符串[]args){
invokeLater(新的Runnable(){
@凌驾
公开募捐{
MyProgressBarTest obj=新的MyProgressBarTest();
obj.createGUI();
}
});
}
public void createGUI(){
最终JFrame=新JFrame();
JPanel面板=新的JPanel();
最终JButton按钮=新JButton(“进度”);
progressBar=新的JProgressBar();
addActionListener(新建ActionListener()){
@凌驾
已执行的公共无效操作(操作事件arg0){
MyCustomProgressBarDialog progressBarObj=新的MyCustomProgressBarDialog(progressBar,框架);
progressBarObj.createProgressUI();
MyActionPerformer actionObj=新的MyActionPerformer(progressBar、progressBarObj、按钮);
actionObj.execute();
}
});
面板。添加(按钮);
框架。添加(面板);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(空);
框架设置尺寸(200300);
frame.setVisible(true);
}
}
类MyActionPerformer扩展SwingWorker{
JProgressBar fProgressBar;
MyCustomProgressBarDialog progressDialog;
按钮;
公共MyActionPerformer(JProgressBar progressBar、MyCustomProgressBarDialog progressDialog、JButton按钮){
this.fProgressBar=progressBar;
此.fProgressBar.setVisible(true);
此.fProgressBar.setUndeterminate(true);
this.button=按钮;
this.progressDialog=progressDialog;
此.button.setEnabled(错误);
}
受保护的字符串doInBackground()引发异常{
calculateResult();
返回“完成”;
}
受保护的void done(){
fProgressBar.setVisible(假);
this.progressDialog.setVisible(false);
此.button.setEnabled(真);
}
public void calculateResult(){
对于(int i=0;i<500000;i++){
System.out.println(“进度条:+i”);
}
}
}
类MyCustomProgressBarDialog扩展了JDialog{
私有静态最终长serialVersionUID=1L;
私有静态JProgressBar progressBar;
私有JFrame主机框架;
专用JLabel标签=新JLabel(“加载”);
私人按钮;
公共MyCustomProgressBarDialog(JProgressBar progressBar,JFrame){
this.progressBar=progressBar;
this.motherFrame=frame;
this.button=按钮;
}
public void createProgressUI(){
添加(标签,边框布局。北);
添加(progressBar、BorderLayout.CENTER);
设置大小(50,40);
setAlwaysOnTop(真);
setLocationRelativeTo(主机架);
未装饰的设置(真实);
setVisible(真);
}
}
MyActionPerformer类扩展了SwingWorker
,它已经done
和doInBackGround
。在doInBackGround
方法中读取文件,并在完成后在done
方法中启用按钮。单击JButton
时,我正在调用一个名为calculate
的方法。用于执行此操作。在读取文件时,请禁用按钮,并在完成