import java.awt.*;
import java.awt.event.*;
import javax.swing.event.*;
import javax.swing.border.*;
import javax.swing.*;

class SliderF extends JFrame implements ChangeListener, ActionListener {

	JLabel l1;	
	JSlider s;	
	JPanel p, pi;
	DisquePanel dp;
	JButton changeLAF;

	int diametre = 50;
	Color clr = Color.red;
	UIManager.LookAndFeelInfo laf[];
	int lafNo = 0;
	
	class DisquePanel extends JPanel {
	
		DisquePanel() {
			setPreferredSize(new Dimension(130,130));
		}
		
		public void paint(Graphics g) {
			g.setColor(clr);
			g.fillOval(65-diametre/2,65-diametre/2,diametre, diametre);
		}
	}
	
	public void init() {
		laf = UIManager.getInstalledLookAndFeels();
		
		getContentPane().add(p = new JPanel());
		
		BoxLayout bxl = new BoxLayout(p, BoxLayout.Y_AXIS);
		p.setLayout(bxl);
		
		p.add(l1 = new JLabel("LAF: " + UIManager.getLookAndFeel().getName()));
		l1.setBorder(BorderFactory.createMatteBorder(5, 8, 5, 8, Color.orange));
		
		p.add(s = new JSlider(0,120,40));
		s.setMajorTickSpacing(30);
		s.setMinorTickSpacing(5);
		s.setPaintTicks(true);
		s.addChangeListener(this);
		
		p.add(pi = new JPanel());
		pi.add(dp = new DisquePanel(), BorderLayout.CENTER);
		pi.setBorder(BorderFactory.createEtchedBorder());
		
		p.add(changeLAF = new JButton("Change"));
		changeLAF.addActionListener(this);
		
		setSize(300,250);
		setVisible(true);
				
	}
	
	public void stateChanged(ChangeEvent e) {
		if (e.getSource() == s) diametre = s.getValue();
		repaint();
	}
	public void actionPerformed(ActionEvent e) {
		lafNo = (lafNo + 1) % laf.length;
		try {
			UIManager.setLookAndFeel(laf[lafNo].getClassName());
			SwingUtilities.updateComponentTreeUI(this);
		}
		catch (Exception exc) {
		}
		l1.setText("LAF: " + UIManager.getLookAndFeel().getName()
			+ "(" + lafNo + ")");
		repaint();
	}
}
public class SF {
	
	public static void main(String[] sss) {
		SliderF sf = new SliderF();
		sf.init();
	}
}