import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BoxLayout;
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;
public class SliderDemo extends JFrame {
protected JLabel label;
protected JSlider slider;
public SliderDemo() {
init();
}
public void init() {
getContentPane().setLayout(new FlowLayout());
JPanel p0 = new JPanel();
p0.setLayout(new BoxLayout(p0, BoxLayout.X_AXIS));
JPanel p1 = new JPanel();
p1.setLayout(new GridLayout(3, 1));
JPanel p = new JPanel();
p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS));
label = new JLabel("101.5 FM");
label.setFont(new Font("Arial", Font.BOLD, 24));
p.add(label);
p1.add(p);
slider = new JSlider(JSlider.HORIZONTAL, 1, 5, 1);
slider.setPaintLabels(true);
slider.setMajorTickSpacing(5);
MyChangeListener lst = new MyChangeListener();
slider.addChangeListener(lst);
p = new JPanel();
p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS));
p.add(slider);
p1.add(p);
p = new JPanel();
p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS));
JPanel p2 = new JPanel();
p2.setLayout(new BoxLayout(p2, BoxLayout.X_AXIS));
for (int k = 1; k <= 5; k++) {
JButton fv = new JButton(Integer.toString(k));
fv.addActionListener(new MyActionListener(k));
p2.add(fv);
}
p.add(p2);
p1.add(p);
p0.add(p1);
p = new JPanel();
p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS));
p0.add(p);
getContentPane().add(p0);
lst.stateChanged(new ChangeEvent(slider));
}
public synchronized void playStation(int index) {
slider.setValue(index);
}
class MyActionListener implements ActionListener {
protected int m_index;
MyActionListener(int index) {
m_index = index;
}
public void actionPerformed(ActionEvent e) {
playStation(m_index);
}
}
class MyChangeListener implements ChangeListener {
MyChangeListener() {
}
public synchronized void stateChanged(ChangeEvent e) {
int frequency = slider.getValue();
label.setText(frequency + " FM");
}
}
public static void main(String[] za) {
SliderDemo d = new SliderDemo();
d.setSize(400, 200);
d.show();
}
}
|