Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.SwingWorker;

public class Main {
    public static void main(String[] args) {
        JFrame frame = new ProgressBarFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

class ProgressBarFrame extends JFrame {
    int MAX = 1000;
    JButton startButton = new JButton("Start");
    JProgressBar progressBar = new JProgressBar(0, MAX);
    JCheckBox checkBox = new JCheckBox("indeterminate");
    JTextArea textArea = new JTextArea();
    SimulatedActivity activity;

    public ProgressBarFrame() {
        setSize(300, 300);
        JPanel panel = new JPanel();
        progressBar.setStringPainted(true);
        panel.add(startButton);
        panel.add(progressBar);
        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);
        startButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event) {
                startButton.setEnabled(false);
                activity = new SimulatedActivity(MAX);
                activity.execute();
            }
        });
    }

    class SimulatedActivity extends SwingWorker<Void, Integer> {
        int current, target;

        public SimulatedActivity(int t) {
            current = 0;
            target = t;
        }

        protected Void doInBackground() throws Exception {
            try {
                while (current < target) {
                    Thread.sleep(100);
                    current++;
                    publish(current);
                }
            } catch (Exception 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);
        }
    }
}