3
ButtonGroup dates = new ButtonGroup();  dates.add(date1);  dates.add(date2);  dates.add(date3);  ButtonGroup times = new ButtonGroup();  times.add(time1);  times.add(time2);  times.add(time3); import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.beans.*; import java.util.Random; public class PrintEnd extends JPanel implements ActionListener,PropertyChangeLis tener {  private ProgressMonitor monitor;  private JButton okButton;  private JTextArea taskOutput;  private Task task;  class Task extends SwingWorker<Void, Void> {  @Override  public Void doInBackground() {  Random random = new Random();  int progress = 0;  setProgress(0);  try {  Thread.sleep(1000);  while (progress < 100 && !isCancelled()) {  //Sleep for up to one second.  Thread.sleep(random.nextInt(1000)); //Make random progress.  progress += random.nextInt(10);  setProgress(Math.min(p rogress, 100));  }  } catch (InterruptedException ignore) {}  return null;  }  @Override  public void done() {  Toolkit.getDefaultToolkit().beep();  okButton.setEnabled(true);  monitor.setProgress(0);  }  }  public PrintEnd() {  super(new BorderLayout());  //Create the demo's UI.  okButton = new JButton("OK");  okButton.setActionCommand("OK");  okButton.addActionListener(this);

Java Extras

Embed Size (px)

Citation preview

Page 1: Java Extras

 

ButtonGroup dates = new ButtonGroup();  dates.add(date1);  dates.add(date2);  dates.add(date3);  ButtonGroup times = new ButtonGroup();  times.add(time1);  times.add(time2);  times.add(time3);

import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.beans.*;import java.util.Random;

public class PrintEnd extends JPanel implements ActionListener,PropertyChangeListener {

  private ProgressMonitor monitor;  private JButton okButton;  private JTextArea taskOutput;  private Task task;

  class Task extends SwingWorker<Void, Void> {  @Override  public Void doInBackground() {  Random random = new Random();  int progress = 0;  setProgress(0);  try {  Thread.sleep(1000);  while (progress < 100 && !isCancelled()) {  //Sleep for up to one second.  Thread.sleep(random.nextInt(1000));

//Make random progress.  progress += random.nextInt(10);  setProgress(Math.min(progress, 100));  }  } catch (InterruptedException ignore) {}  return null;  }

  @Override  public void done() {  Toolkit.getDefaultToolkit().beep();  okButton.setEnabled(true);  monitor.setProgress(0);  }  }

  public PrintEnd() {  super(new BorderLayout());

  //Create the demo's UI.  okButton = new JButton("OK");  okButton.setActionCommand("OK");  okButton.addActionListener(this);

Page 2: Java Extras

 

  taskOutput = new JTextArea(5, 20);  taskOutput.setMargin(new Insets(5,5,5,5));  taskOutput.setEditable(false);

  add(okButton, BorderLayout.PAGE_START);  add(new JScrollPane(taskOutput), BorderLayout.CENTER);  setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));

  }

  /**  * Invoked when the user presses the start button.  */  public void actionPerformed(ActionEvent evt) {  monitor = new ProgressMonitor(PrintEnd.this,  "Printing ticket",  "", 0, 100);  monitor.setProgress(0);  task = new Task();  task.addPropertyChangeListener(this);  task.execute();  okButton.setEnabled(false);  }

  /**  * Invoked when tasks progress property changes.  */  public void propertyChange(PropertyChangeEvent evt) {  if ("progress" == evt.getPropertyName() ) {  int progress = (Integer) evt.getNewValue();  monitor.setProgress(progress);  String message =  String.format("Completed %d%%.\n", progress);  monitor.setNote(message);  taskOutput.append(message);  if (monitor.isCanceled() || task.isDone()) {  Toolkit.getDefaultToolkit().beep();  if (monitor.isCanceled()) {  task.cancel(true);  taskOutput.append("Task canceled.\n");  } else {  taskOutput.append("Task completed.\n");  }  okButton.setEnabled(true);  }  }

  }

  /**  * Create the GUI and show it. For thread safety,  * this method should be invoked from the  * event-dispatching thread.  */  private static void createAndShowGUI() {  //Create and set up the window.  JFrame frame = new JFrame("Printing Ticket");  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Page 3: Java Extras

 

  //Create and set up the content pane.  JComponent newContentPane = new PrintEnd();  newContentPane.setOpaque(true); //content panes must be opaque  frame.setContentPane(newContentPane);

  //Display the window.  frame.pack();  frame.setVisible(true);  }

  public static void main(String[] args) {  //Schedule a job for the event-dispatching thread:  //creating and showing this application's GUI.  javax.swing.SwingUtilities.invokeLater(new Runnable() {  public void run() {  createAndShowGUI();  }  });  }}