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 cancelButton; private int counter = 0; private Thread countingThread; /** * @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); cancelButton = new JButton ("Cancel"); buttonPanel.add(cancelButton); contentPane.add(buttonPanel, BorderLayout.SOUTH); cancelButton.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); } public void actionPerformed(ActionEvent event) { if (event.getSource() == countButton) { countingThread = new Thread(new SlowCounter()); countingThread.start(); } else { countingThread.interrupt(); } } class SlowCounter implements Runnable { public void run() { counter++; try { Thread.sleep(10000); label.setText("" + counter); } catch (InterruptedException e) { label.setText ("Cancelled"); } } } }