Java Reference
In-Depth Information
Display 19.2
Threaded Version of FillDemo (part 2 of 3)
17 private JPanel box;
18 public static void main(String[] args)
19 {
20 ThreadedFillDemo gui = new ThreadedFillDemo();
21 gui.setVisible( true );
22 }
23 public ThreadedFillDemo()
24 {
25 setSize(WIDTH, HEIGHT);
26 setTitle("Threaded Fill Demo");
27 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
28 setLayout( new BorderLayout());
29 box = new JPanel();
30 add(box, "Center");
31 JPanel buttonPanel = new JPanel();
32 buttonPanel.setLayout( new FlowLayout());
33 JButton startButton = new JButton("Start");
34 startButton.addActionListener( this );
35 buttonPanel.add(startButton);
36 add(buttonPanel, "South");
37 }
You need a thread object,
even if there are no
instance variables in the
class definition of Packer .
38 public void actionPerformed(ActionEvent e)
39 {
40 Packer packerThread = new Packer();
41 packerThread.start();
42 }
start starts ” the thread and calls run .
43 private class Packer extends Thread
44 {
45 public void run()
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 }
run is inherited from Thread but needs to be
overridden. This definition of run is identical
to that of fill in Display 19.1.
 
Search WWH ::




Custom Search