Java Reference
In-Depth Information
13
import
java.awt.BorderLayout;
14
import
java.awt.GridLayout;
15
import
java.awt.event.ActionListener;
16
import
java.awt.event.ActionEvent;
17
import
java.util.concurrent.ExecutionException;
18
import
java.beans.PropertyChangeListener;
19
import
java.beans.PropertyChangeEvent;
20
21
public class
FindPrimes
extends
JFrame
22
{
23
private final
JTextField highestPrimeJTextField =
new
JTextField();
24
private final
JButton getPrimesJButton =
new
JButton(
"Get Primes"
);
25
private final
JTextArea displayPrimesJTextArea =
new
JTextArea();
26
private final
JButton cancelJButton =
new
JButton(
"Cancel"
);
27
private final
JProgressBar progressJProgressBar =
new
JProgressBar();
28
private final
JLabel statusJLabel =
new
JLabel();
29
private
PrimeCalculator calculator;
30
31
// constructor
32
public
FindPrimes()
33
{
34
super
(
"Finding Primes with SwingWorker"
);
35
setLayout(
new
BorderLayout());
36
37
// initialize panel to get a number from the user
38
JPanel northJPanel =
new
JPanel();
39
northJPanel.add(
new
JLabel(
"Find primes less than: "
));
40
highestPrimeJTextField.setColumns(
5
);
41
northJPanel.add(highestPrimeJTextField);
42
getPrimesJButton.addActionListener(
43
new
ActionListener()
44
{
45
public void
actionPerformed(ActionEvent e)
46
{
47
progressJProgressBar.setValue(
0
);
// reset JProgressBar
48
displayPrimesJTextArea.setText(
""
);
// clear JTextArea
49
statusJLabel.setText(
""
);
// clear JLabel
50
51
int
number;
// search for primes up through this value
52
53
try
54
{
55
// get user input
56
number = Integer.parseInt(
57
highestPrimeJTextField.getText());
58
}
59
catch
(NumberFormatException ex)
60
{
61
statusJLabel.setText(
"Enter an integer."
);
62
return
;
63
}
64
Fig. 23.27
|
Using a
SwingWorker
to display prime numbers and update a
JProgressBar
while the prime numbers are being calculated. (Part 2 of 4.)