package fr.upd.jby; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*; /** * Source code <a href="SpeedometerExample.java.html">here</a>. * @author Jean-Baptiste Yunès * @date 03/2011 */ public class SpeedometerExample implements Runnable { private int l; private Vector<String> lafs; public void run() { lafs = new Vector<String>(); UIManager.LookAndFeelInfo [] lafi = UIManager.getInstalledLookAndFeels(); for (UIManager.LookAndFeelInfo info : lafi) { lafs.add(info.getClassName()); } final JFrame f = new JFrame("Du vent dans les cheveux..."); final Speedometer s = new Speedometer(50,0,100); f.getContentPane().setLayout(new BorderLayout()); f.getContentPane().add(s,BorderLayout.CENTER); JButton b = new JButton("Next layout"); f.getContentPane().add(b,BorderLayout.NORTH); JButton b2 = new JButton("Change the value"); f.getContentPane().add(b2,BorderLayout.SOUTH); f.pack(); f.setVisible(true); final Random r = new Random(); l = 0; b.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { UIManager.setLookAndFeel(lafs.elementAt(l)); SwingUtilities.updateComponentTreeUI(f); f.pack(); l = (l+1)%lafs.size(); } catch(Exception ex) { ex.printStackTrace(); } } }); b2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int saut = r.nextInt()%10; if (saut==0) saut = 30; else saut = 5; int v = r.nextInt()%saut; s.setValue(s.getValue()+v); } }); } public static void main(String [] args) { SwingUtilities.invokeLater(new SpeedometerExample()); } }