当按下开始按钮时我开始进度条,当我的任务完成时,我调用我试图阻止进度条的不确定模式的功能,但我仍然无法做到(我是使用SwingWorker
作为我的申请表)
这是我启动进度条的代码;此代码写在开始按钮内:
private void StartButtonMouseClicked(java.awt.event.MouseEvent evt) {
Main f22 = new Main();
f2.getfile(FileName, 0);
f2.execute();
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
jProgressBar1.setIndeterminate(true);
}
});
这是函数内部的代码,在任务完成后调用。
jProgressBar1.setVisible(false);
答案 0 :(得分:2)
请尝试通过此代码,使用SwingWorker作为JProgressBar的工作代码,然后一旦理解了它的工作原理,就可以随意实现它。
import java.awt.*;
import java.awt.event.*;
import java.util.List;
import javax.swing.*;
public class ProgressBarTest
{
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
JFrame frame = new ProgressBarFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}
/**
* A frame that contains a button to launch a simulated activity, a progress bar, and a
* text area for the activity output.
*/
class ProgressBarFrame extends JFrame
{
public ProgressBarFrame()
{
setTitle("ProgressBarTest");
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
// this text area holds the activity output
textArea = new JTextArea();
// set up panel with button and progress bar
final int MAX = 1000;
JPanel panel = new JPanel();
startButton = new JButton("Start");
progressBar = new JProgressBar(0, MAX);
progressBar.setStringPainted(true);
panel.add(startButton);
panel.add(progressBar);
checkBox = new JCheckBox("indeterminate");
checkBox.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
progressBar.setIndeterminate(checkBox.isSelected());
progressBar.setStringPainted(!progressBar.isIndeterminate());
}
});
panel.add(checkBox);
add(new JScrollPane(textArea), BorderLayout.CENTER);
add(panel, BorderLayout.SOUTH);
// set up the button action
startButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
startButton.setEnabled(false);
activity = new SimulatedActivity(MAX);
activity.execute();
}
});
}
private JButton startButton;
private JProgressBar progressBar;
private JCheckBox checkBox;
private JTextArea textArea;
private SimulatedActivity activity;
public static final int DEFAULT_WIDTH = 400;
public static final int DEFAULT_HEIGHT = 200;
class SimulatedActivity extends SwingWorker<Void, Integer>
{
/**
* Constructs the simulated activity that increments a counter from 0 to a
* given target.
* @param t the target value of the counter.
*/
public SimulatedActivity(int t)
{
current = 0;
target = t;
}
protected Void doInBackground() throws Exception
{
try
{
while (current < target)
{
Thread.sleep(100);
current++;
publish(current);
}
}
catch (InterruptedException e)
{
}
return null;
}
protected void process(List<Integer> chunks)
{
for (Integer chunk : chunks)
{
textArea.append(chunk + "\n");
progressBar.setValue(chunk);
}
}
protected void done()
{
startButton.setEnabled(true);
}
private int current;
private int target;
}
}