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();
}
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.