private JButton createStopButton() { stopAction = new AbstractAction(resourceManager.getString("ProgressBarDemo.stop_button")) { public void actionPerformed(ActionEvent e) { timer.stop(); loadAction.setEnabled(true); stopAction.setEnabled(false); } }; return createButton(stopAction); }
private void createProgressPanel() { setLayout(new BorderLayout()); JPanel textWrapper = new JPanel(new BorderLayout()); textWrapper.setBorder(new SoftBevelBorder(BevelBorder.LOWERED)); textWrapper.setAlignmentX(LEFT_ALIGNMENT); progressTextArea = new MyTextArea(); progressTextArea .getAccessibleContext() .setAccessibleName(resourceManager.getString("ProgressBarDemo.accessible_text_area_name")); progressTextArea .getAccessibleContext() .setAccessibleName( resourceManager.getString("ProgressBarDemo.accessible_text_area_description")); textWrapper.add(new JScrollPane(progressTextArea), BorderLayout.CENTER); add(textWrapper, BorderLayout.CENTER); JPanel progressPanel = new JPanel(); add(progressPanel, BorderLayout.SOUTH); progressBar = new JProgressBar(JProgressBar.HORIZONTAL, 0, text.length()) { public Dimension getPreferredSize() { return new Dimension(300, super.getPreferredSize().height); } }; progressBar .getAccessibleContext() .setAccessibleName( resourceManager.getString("ProgressBarDemo.accessible_text_loading_progress")); progressPanel.add(progressBar); progressPanel.add(createLoadButton()); progressPanel.add(createStopButton()); }
private JButton createLoadButton() { loadAction = new AbstractAction(resourceManager.getString("ProgressBarDemo.start_button")) { public void actionPerformed(ActionEvent e) { loadAction.setEnabled(false); stopAction.setEnabled(true); if (progressBar.getValue() == progressBar.getMaximum()) { progressBar.setValue(0); textLocation = 0; progressTextArea.setText(""); } timer.start(); } }; return createButton(loadAction); }
/** * JProgressBar Demo * * @version 1.12 11/17/05 * @author Jeff Dinkins # @author Peter Korn (accessibility support) */ @DemoProperties( value = "ProgressBar Demo", category = "Controls", description = "Demonstrates the JProgressBar, a control which displays progress to the user", sourceFiles = { "com/sun/swingset3/demos/progressbar/ProgressBarDemo.java", "com/sun/swingset3/demos/ResourceManager.java", "com/sun/swingset3/demos/progressbar/resources/ProgressBarDemo.properties", "com/sun/swingset3/demos/progressbar/resources/images/ProgressBarDemo.gif" }) public class ProgressBarDemo extends JPanel { private final ResourceManager resourceManager = new ResourceManager(this.getClass()); /** main method allows us to run as a standalone demo. */ public static void main(String[] args) { JFrame frame = new JFrame(ProgressBarDemo.class.getAnnotation(DemoProperties.class).value()); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(new ProgressBarDemo()); frame.setPreferredSize(new Dimension(800, 600)); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } /** ProgressBarDemo Constructor */ public ProgressBarDemo() { createProgressPanel(); } private final javax.swing.Timer timer = new javax.swing.Timer(18, createTextLoadAction()); private Action loadAction; private Action stopAction; private JProgressBar progressBar; private JTextArea progressTextArea; private void createProgressPanel() { setLayout(new BorderLayout()); JPanel textWrapper = new JPanel(new BorderLayout()); textWrapper.setBorder(new SoftBevelBorder(BevelBorder.LOWERED)); textWrapper.setAlignmentX(LEFT_ALIGNMENT); progressTextArea = new MyTextArea(); progressTextArea .getAccessibleContext() .setAccessibleName(resourceManager.getString("ProgressBarDemo.accessible_text_area_name")); progressTextArea .getAccessibleContext() .setAccessibleName( resourceManager.getString("ProgressBarDemo.accessible_text_area_description")); textWrapper.add(new JScrollPane(progressTextArea), BorderLayout.CENTER); add(textWrapper, BorderLayout.CENTER); JPanel progressPanel = new JPanel(); add(progressPanel, BorderLayout.SOUTH); progressBar = new JProgressBar(JProgressBar.HORIZONTAL, 0, text.length()) { public Dimension getPreferredSize() { return new Dimension(300, super.getPreferredSize().height); } }; progressBar .getAccessibleContext() .setAccessibleName( resourceManager.getString("ProgressBarDemo.accessible_text_loading_progress")); progressPanel.add(progressBar); progressPanel.add(createLoadButton()); progressPanel.add(createStopButton()); } private JButton createLoadButton() { loadAction = new AbstractAction(resourceManager.getString("ProgressBarDemo.start_button")) { public void actionPerformed(ActionEvent e) { loadAction.setEnabled(false); stopAction.setEnabled(true); if (progressBar.getValue() == progressBar.getMaximum()) { progressBar.setValue(0); textLocation = 0; progressTextArea.setText(""); } timer.start(); } }; return createButton(loadAction); } private JButton createStopButton() { stopAction = new AbstractAction(resourceManager.getString("ProgressBarDemo.stop_button")) { public void actionPerformed(ActionEvent e) { timer.stop(); loadAction.setEnabled(true); stopAction.setEnabled(false); } }; return createButton(stopAction); } private static JButton createButton(Action a) { JButton b = new JButton(); // setting the following client property informs the button to show // the action text as it's name. The default is to not show the // action text. b.putClientProperty("displayActionText", Boolean.TRUE); b.setAction(a); return b; } private int textLocation = 0; private final String text = resourceManager.getString("ProgressBarDemo.text"); private Action createTextLoadAction() { return new AbstractAction("text load action") { public void actionPerformed(ActionEvent e) { if (progressBar.getValue() < progressBar.getMaximum()) { progressBar.setValue(progressBar.getValue() + 1); progressTextArea.append(text.substring(textLocation, textLocation + 1)); textLocation++; } else { timer.stop(); loadAction.setEnabled(true); stopAction.setEnabled(false); } } }; } private static class MyTextArea extends JTextArea { private MyTextArea() { super(null, 0, 0); setEditable(false); setText(""); } public float getAlignmentX() { return LEFT_ALIGNMENT; } public float getAlignmentY() { return TOP_ALIGNMENT; } } }