package SliderTest;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.FlowLayout;
import java.util.Dictionary;
import java.util.Hashtable;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.JTextField;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
/**
* Frame cu regulator in linie si cu cimp ce afiseaza valoarea curenta a regulatorului
* @author Dan
*
*/
public class SliderTestFrame extends JFrame
{
public SliderTestFrame()
{
setTitle("SliderTest");
setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
sliderPanel = new JPanel();
sliderPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
//interceptor unic pentru regulatoare
listner = new ChangeListener()
{
public void stateChanged(ChangeEvent event)
{
//Refresh la cimpuri la modificarea regulatorului
JSlider source = (JSlider) event.getSource();
textField.setText("" + source.getValue());
}
};
//Adaugarea unui regulator simplu
JSlider slider = new JSlider();
addSlider(slider,"Plain");
//Adaugarea regulatorului cu dispartituri principale si secundare
slider = new JSlider();
slider.setPaintTicks(true);
slider.setMajorTickSpacing(20);
slider.setMinorTickSpacing(5);
addSlider(slider, "Ticks");
//Adaugarea regulatorului cu fixarea la dispartituri
slider = new JSlider();
slider.setPaintTicks(true);
slider.setSnapToTicks(true);
slider.setMajorTickSpacing(20);
slider.setMinorTickSpacing(5);
addSlider(slider, "Snap to Ticks");
//Adaugarea regulatorului a carei drum nu se arata
slider = new JSlider();
slider.setPaintTicks(true);
slider.setMajorTickSpacing(20);
slider.setMinorTickSpacing(5);
slider.setPaintTrack(false);
addSlider(slider, "Ticks");
//Adaugarea regulatorului cu miscare in contra sens
slider = new JSlider();
slider.setPaintTicks(true);
slider.setMajorTickSpacing(20);
slider.setMinorTickSpacing(5);
slider.setInverted(true);
addSlider(slider, "Inverted");
//Adaugarea regulatorului cu tick cifrate
slider= new JSlider();
slider.setPaintTicks(true);
slider.setPaintLabels(true);
slider.setMajorTickSpacing(20);
slider.setMinorTickSpacing(5);
addSlider(slider,"Labels");
//Adaugarea regulatorului cu tick literat
slider = new JSlider();
slider.setPaintTicks(true);
slider.setPaintLabels(true);
slider.setMajorTickSpacing(20);
slider.setMinorTickSpacing(5);
//Literile
Dictionary<Integer, Component> labelTable = new Hashtable<Integer, Component>();
labelTable.put(0,new JLabel("A"));
labelTable.put(20,new JLabel("B"));
labelTable.put(40,new JLabel("C"));
labelTable.put(60,new JLabel("D"));
labelTable.put(80,new JLabel("E"));
labelTable.put(100,new JLabel("F"));
slider.setLabelTable(labelTable);
addSlider(slider, "Custom Labels");
//Adaugarea regulatorului cu tickurile in forma de pictograme.
slider = new JSlider();
slider.setPaintLabels(true);
slider.setPaintTicks(true);
slider.setSnapToTicks(true);
slider.setMajorTickSpacing(20);
slider.setMinorTickSpacing(20);
labelTable = new Hashtable<Integer, Component>();
//Adaugarea imaginilor
labelTable.put(0, new JLabel(new ImageIcon("images/nine.gif")));
labelTable.put(20, new JLabel(new ImageIcon("images/ten.gif")));
labelTable.put(40, new JLabel(new ImageIcon("images/jack.gif")));
labelTable.put(60, new JLabel(new ImageIcon("images/queen.gif")));
labelTable.put(80, new JLabel(new ImageIcon("images/king.gif")));
labelTable.put(100, new JLabel(new ImageIcon("images/ace.gif")));
slider.setLabelTable(labelTable);
addSlider(slider, "Icon Labels");
//Adaugarea unui Text FIeld pentru afisarea LAbel
textField = new JTextField();
add(sliderPanel, BorderLayout.CENTER);
add(textField, BorderLayout.SOUTH);
}
/**
* Adaugam reguleator in panl si il legam cu interceptorul de evenimente
* @param s regulator
* @param description decrierea regulatorului
*/
public void addSlider(JSlider s, String description)
{
s.addChangeListener(listner);
JPanel panel = new JPanel();
panel.add(s);
panel.add(new JLabel(description));
sliderPanel.add(panel);
}
public static final int DEFAULT_WIDTH = 350;
public static final int DEFAULT_HEIGHT = 450;
private JPanel sliderPanel;
private ChangeListener listner;
private JTextField textField;
}