Java Tutorial/Swing/ProgressMonitor
Содержание
- 1 14. Create a ProgressMonitor toolbar
- 2 14. Creating a Progress Monitor Dialog
- 3 14. Customizing a ProgressMonitor Look and Feel
- 4 14. Implement ProgressMonitor toolbar with a file to monitor
- 5 14. JAR Archives: Pack Progress Monitor
- 6 14. ProgressMonitor Class
- 7 14. Setting the Popup Delay of a Progress Monitor Dialog
14. Create a ProgressMonitor toolbar
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.ProgressMonitor;
import javax.swing.SwingUtilities;
import javax.swing.Timer;
import javax.swing.UIManager;
public class Main extends JFrame implements ActionListener {
static ProgressMonitor pbar = new ProgressMonitor(null, "Monitoring Progress", "Init. . .", 0,
100);
static int counter = 0;
public Main() {
setSize(250, 100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Timer timer = new Timer(500, this);
timer.start();
setVisible(true);
}
public static void main(String args[]) {
UIManager.put("ProgressMonitor.progressText", "This is progress?");
UIManager.put("OptionPane.cancelButtonText", "Go Away");
new Main();
}
public void actionPerformed(ActionEvent e) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
if (pbar.isCanceled()) {
pbar.close();
System.exit(1);
}
pbar.setProgress(counter);
pbar.setNote("Operation is " + counter + "% complete");
counter += 2;
}
});
}
}
14. Creating a Progress Monitor Dialog
import javax.swing.JFrame;
import javax.swing.ProgressMonitor;
import javax.swing.UIManager;
public class Main {
public static void main(String[] argv) throws Exception {
String message = "Description of Task";
String note = "subtask";
String title = "Task Title";
UIManager.put("ProgressMonitor.progressText", title);
int min = 0;
int max = 100;
JFrame component = new JFrame();
ProgressMonitor pm = new ProgressMonitor(component, message, note, min, max);
boolean cancelled = pm.isCanceled();
if (cancelled) {
System.out.println("Stop task");
} else {
pm.setProgress(100);
pm.setNote("New Note");
}
}
}
14. Customizing a ProgressMonitor Look and Feel
ValueTypeProgressMonitor.progressTextString
14. Implement ProgressMonitor toolbar with a file to monitor
import java.io.FileInputStream;
import javax.swing.ProgressMonitorInputStream;
public class Main {
public static void main(String args[]) throws Exception {
ProgressMonitorInputStream monitor;
monitor = new ProgressMonitorInputStream(null, "Loading ", new FileInputStream("fileName.txt"));
while (monitor.available() > 0) {
byte[] data = new byte[38];
monitor.read(data);
System.out.write(data);
}
}
}
14. JAR Archives: Pack Progress Monitor
import java.awt.ruponent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.jar.Pack200;
import javax.swing.ProgressMonitor;
public class PackProgressMonitor extends ProgressMonitor implements PropertyChangeListener {
public PackProgressMonitor(Component parent) {
super(parent, null, "Packing", -1, 100);
}
public void propertyChange(PropertyChangeEvent event) {
if (event.getPropertyName().equals(Pack200.Packer.PROGRESS)) {
String newValue = (String) event.getNewValue();
int value = Integer.parseInt(newValue);
this.setProgress(value);
}
}
}
14. ProgressMonitor Class
The ProgressMonitor class is used to report on the status of a time-consuming task.
Creating a ProgressMonitor
public ProgressMonitor(Component parentComponent, Object message, String note, int minimum, int maximum)
14. Setting the Popup Delay of a Progress Monitor Dialog
import javax.swing.JFrame;
import javax.swing.ProgressMonitor;
import javax.swing.UIManager;
public class Main {
public static void main(String[] argv) throws Exception {
String message = "Description of Task";
String note = "subtask";
String title = "Task Title";
UIManager.put("ProgressMonitor.progressText", title);
int min = 0;
int max = 100;
JFrame component = new JFrame();
ProgressMonitor pm = new ProgressMonitor(component, message, note, min, max);
int millisToPopup = pm.getMillisToPopup(); // 2000
int millisToDecideToPopup = pm.getMillisToDecideToPopup(); // 500
pm.setMillisToPopup(0);
pm.setMillisToDecideToPopup(0);
}
}