Java Reference
In-Depth Information
Display 19.1
Nonresponsive GUI
(part 2 of 3)
31
setLayout(
new
BorderLayout());
32
box =
new
JPanel();
33
add(box, "Center");
34
JPanel buttonPanel =
new
JPanel();
35
buttonPanel.setLayout(
new
FlowLayout());
36
JButton startButton =
new
JButton("Start");
37
startButton.addActionListener(
this
);
38
buttonPanel.add(startButton);
39
add(buttonPanel, "South");
40
}
41
public void
actionPerformed(ActionEvent e)
42
{
43
fill( );
Nothing else can happen until
actionPerformed
returns, which
does not happen until
fill
returns.
44
}
45
public void
fill()
46
{
47
Graphics g = box.getGraphics();
48
for
(
int
y = 0; y < FILL_HEIGHT; y = y + CIRCLE_SIZE)
49
for
(
int
x = 0; x < FILL_WIDTH; x = x + CIRCLE_SIZE)
50
{
51
g.fillOval(x, y, CIRCLE_SIZE, CIRCLE_SIZE);
52
doNothing(PAUSE);
53
}
54
}
Everything stops for
100 milliseconds (1/10
of a second).
55
public void
doNothing(
int
milliseconds)
56
{
57
try
58
{
59
Thread.sleep(milliseconds);
60
}
61
catch(InterruptedException e)
62
{
63
System.out.println("Unexpected interrupt");
64
System.exit(0);
65
}
66
}
67
}
(continued)