Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Hello Chegg Expert! Okay, so I need to write a basic program on JProgressBar for

ID: 666009 • Letter: H

Question

Hello Chegg Expert!

Okay, so I need to write a basic program on JProgressBar for class. I decided to do this super basic and decided to print out a message based on the amount the user would like to see printed out. So if the user wanted 20 prints, then the program will print out an amount of 20... but I can't get the JProgressBar to update alongside the program when it runs. How do I do this? I also need help printing this out onto a JTextArea so please help with that too! Thanks!

Code:

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JProgressBar;

import javax.swing.JOptionPane;
import javax.swing.JTextArea;
import javax.swing.JScrollBar;
import javax.swing.JButton;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeEvent;

public class ProgressBar {

   private JFrame frame;
   private JProgressBar progressBar;
   public JTextArea textArea;
   public static int thisMany;
   public static String ann;

   /**
   * Launch the application.
   */
   public static void main(String[] args) {
       EventQueue.invokeLater(new Runnable() {
           public void run() {
               try {
                   ProgressBar window = new ProgressBar();
                   window.frame.setVisible(true);
               } catch (Exception e) {
                   e.printStackTrace();
               }
           }
       });
   }

   /**
   * Create the application.
   */
   public ProgressBar() {
       initialize();
   }

   /**
   * Initialize the contents of the frame.
   */
   private void initialize() {

       frame = new JFrame();
       frame.setBounds(100, 100, 450, 471);
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       frame.getContentPane().setLayout(null);
       {
           progressBar = new JProgressBar(0);
           progressBar
                   .addPropertyChangeListener(new ProgressBarPropertyChangeListener());
           progressBar.setValue(0);
           progressBar.setStringPainted(true);
           progressBar.setIndeterminate(false);
           progressBar.setMaximum(10000000);
           progressBar.setMinimum(0);
           progressBar.setBounds(77, 317, 272, 31);
           frame.getContentPane().add(progressBar);
           progressBar.setName("progressBar");

       }
       {
           JScrollBar scrollBar = new JScrollBar();
           scrollBar.setBounds(387, 16, 26, 255);
           scrollBar.setName("scrollBar");
           frame.getContentPane().add(scrollBar);
       }
       {
           JTextArea textArea = new JTextArea();
           textArea.setEditable(false);
           textArea.setBounds(15, 16, 398, 255);
           textArea.setName("textArea");
           textArea.append("HI!!");
           frame.getContentPane().add(textArea);
       }
       {
           JButton btnClickStart = new JButton("Click Start");
           btnClickStart.addActionListener(new BtnClickStartActionListener());
           btnClickStart.setBounds(154, 282, 115, 29);
           btnClickStart.setName("btnClickStart");
           frame.getContentPane().add(btnClickStart);
       }
   }

   private class BtnClickStartActionListener extends JProgressBar implements
           ActionListener {
       public void actionPerformed(ActionEvent arg0) {

           String count = JOptionPane
                   .showInputDialog("How many times should we print it?");
           String message = "say HI!";
           try {
               thisMany = Integer.parseInt(count);
           } catch (Exception e) {
               System.out.println("Number only please");
           }

           for (int i = 0; i < thisMany; i++) {
               while (i < thisMany) {
                   try {

                       Thread.sleep(100);
                       progressBar.setValue(i++);
                   } catch (InterruptedException e) {
                       e.printStackTrace();
                   }
                   System.out.println("HI!!");

               }
               // textArea.append(message);
           }
       }
   }

   private class ProgressBarPropertyChangeListener implements
           PropertyChangeListener {
       public void propertyChange(PropertyChangeEvent evt) {
           JProgressBar comp = (JProgressBar) evt.getSource();
           int min = 0;
           int value = thisMany;
           value = comp.getValue();
           min = comp.getMinimum();
           thisMany = comp.getMaximum();
       }
   }
}

Explanation / Answer

import java.awt.EventQueue;

import javax.swing.JFrame;

import javax.swing.JProgressBar;

import javax.swing.JOptionPane;

import javax.swing.JTextArea;

import javax.swing.JScrollBar;

import javax.swing.JButton;

import java.awt.event.ActionListener;

import java.awt.event.ActionEvent;

import java.beans.PropertyChangeListener;

import java.beans.PropertyChangeEvent;

public class ProgressBar {

private JFrame frame;

private JProgressBar progressBar;

public JTextArea textArea;

public static int thisMany;

public static String ann;

  

/**

   * Launch the application.

   */

public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() {

public void run() {

try {

ProgressBar window = new ProgressBar();

window.frame.setVisible(true);

} catch (Exception e) {

e.printStackTrace();

}

}

});

}

/**

   * Create the application.

   */

public ProgressBar() {

initialize();

}

/**

   * Initialize the contents of the frame.

   */

private void initialize() {

frame = new JFrame();

frame.setBounds(100, 100, 450, 471);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.getContentPane().setLayout(null);

{

progressBar = new JProgressBar(0,100);

progressBar

.addPropertyChangeListener(new ProgressBarPropertyChangeListener());

progressBar.setValue(0);

progressBar.setStringPainted(true);

progressBar.setIndeterminate(false);

//progressBar.setMaximum(100);

//progressBar.setMinimum(0);

progressBar.setBounds(77, 317, 272, 31);

frame.getContentPane().add(progressBar);

progressBar.setName("progressBar");

}

{

JScrollBar scrollBar = new JScrollBar();

scrollBar.setBounds(387, 16, 26, 255);

scrollBar.setName("scrollBar");

frame.getContentPane().add(scrollBar);

}

{

textArea = new JTextArea();

textArea.setEditable(false);

textArea.setBounds(15, 16, 398, 255);

textArea.setName("textArea");

textArea.append("HI!!");

frame.getContentPane().add(textArea);

}

{

JButton btnClickStart = new JButton("Click Start");

btnClickStart.addActionListener(new BtnClickStartActionListener());

btnClickStart.setBounds(154, 282, 115, 29);

btnClickStart.setName("btnClickStart");

frame.getContentPane().add(btnClickStart);

}

}

private class BtnClickStartActionListener extends JProgressBar implements

ActionListener {

public void actionPerformed(ActionEvent arg0) {

String count = JOptionPane

.showInputDialog("How many times should we print it?");

String message = "say HI!";

try {

thisMany = Integer.parseInt(count);

} catch (Exception e) {

System.out.println("Number only please");

}

int progressMultiplier=100/thisMany;

textArea.append(" ************OUTPUT**************** ");

for (int i = 0; i < thisMany; i++) {

while (i < thisMany) {

try {

Thread.sleep(100);

progressBar.setValue((i++)*progressMultiplier);

} catch (InterruptedException e) {

e.printStackTrace();

}

//System.out.println("HI!!");

textArea.append("Hi"+" ");

}

progressBar.setValue((i)*10);

// textArea.append(message);

}

}

}

private class ProgressBarPropertyChangeListener implements

PropertyChangeListener {

public void propertyChange(PropertyChangeEvent evt) {

JProgressBar comp = (JProgressBar) evt.getSource();

int min = 0;

int value = thisMany;

value = comp.getValue();

min = comp.getMinimum();

thisMany = comp.getMaximum();

}

}

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote