import java.awt.BorderLayout; import java.awt.Container; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JSlider; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; /** * */ /** * @author barbaralerner * */ public class Hello implements ActionListener{ private JLabel label; private JButton countButton; private JButton multiplyButton; private int counter = 0; /** * @param args */ public static void main(String[] args) { new Hello(); } public Hello() { JFrame frame = new JFrame(); Container contentPane = frame.getContentPane(); label = new JLabel("Hello"); contentPane.add(label, BorderLayout.CENTER); JPanel buttonPanel = new JPanel(); countButton = new JButton ("Count"); buttonPanel.add(countButton); contentPane.add(buttonPanel, BorderLayout.SOUTH); countButton.addActionListener (this); multiplyButton = new JButton ("Multiply"); buttonPanel.add(multiplyButton); contentPane.add(buttonPanel, BorderLayout.SOUTH); multiplyButton.addActionListener (this); final JSlider sizeSlider = new JSlider(JSlider.HORIZONTAL); contentPane.add (sizeSlider, BorderLayout.NORTH); sizeSlider.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent arg0) { label.setFont(label.getFont().deriveFont((float) sizeSlider.getValue())); } }); frame.setSize(new Dimension (200, 200)); frame.setVisible(true); new Thread(new Controller()).start(); } public synchronized void actionPerformed(ActionEvent event) { if (event.getSource() == countButton) { counter++; } else { counter = counter * 2; } notify(); label.setText("" + counter); } private synchronized void countTo10() { while (counter < 10) { try { wait(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } private synchronized void multiplyTo1000() { while (counter < 1000) { try { wait(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } class Controller implements Runnable { public void run() { multiplyButton.setEnabled(false); countTo10(); countButton.setEnabled(false); multiplyButton.setEnabled(true); multiplyTo1000(); multiplyButton.setEnabled(false); } } }