// File:  JFontSlider.java
//
// Swing application showing use of a Slider to control font size

import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;

public class JFontSlider extends JFrame {

    public JFontSlider(String sTitleText) {
        super(sTitleText);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        getContentPane().add(text, BorderLayout.CENTER);
        sizer.setMinimum(MIN_POINTS);
        sizer.setMaximum(MAX_POINTS);
        sizer.setValue(text.getFont().getSize());
        sizer.setMajorTickSpacing(4);
        sizer.setMinorTickSpacing(1);
        sizer.setPaintLabels(true);
        sizer.setPaintTicks(true);
        sizer.addChangeListener(new ChangeListener() {
                public void stateChanged(ChangeEvent e) {
                    Font of = text.getFont();
                    Font nf = new Font(of.getName(), of.getStyle(), sizer.getValue());
                    text.setFont(nf);
                    setTitle(sTitle + "  -  Font size: " + nf.getSize());
                    text.repaint();
                }
            }
        );

        JPanel sliderPanel = new JPanel(new BorderLayout());
        sliderPanel.setBorder(BorderFactory.createTitledBorder("Font size"));
        sliderPanel.add(sizer, BorderLayout.SOUTH);
        getContentPane().add(sliderPanel, BorderLayout.SOUTH);
        setSize(400, 175);
        setVisible(true);
    }

    public static void main(String[] args) {
        new JFontSlider(sTitle);
    }

    private JLabel text   = new JLabel("Sample Text", JLabel.CENTER);
    private JSlider sizer = new JSlider();
    private static final int MIN_POINTS = 6;
    private static final int MAX_POINTS = 66;
    private static final String sTitle = "Using a Slider";

}
