/*
* The MIT License (MIT)
*
* Copyright (c) 2007-2015 Broad Institute
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
package slider;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
/**
* Demo application panel to display a range slider.
* @author Ernest Yu
*/
public class RangeSliderDemo extends JPanel {
private JLabel rangeSliderLabel1 = new JLabel();
private JLabel rangeSliderValue1 = new JLabel();
private JLabel rangeSliderLabel2 = new JLabel();
private JLabel rangeSliderValue2 = new JLabel();
private RangeSlider rangeSlider = new RangeSlider();
public RangeSliderDemo() {
setBorder(BorderFactory.createEmptyBorder(6, 6, 6, 6));
setLayout(new GridBagLayout());
rangeSliderLabel1.setText("Lower value:");
rangeSliderLabel2.setText("Upper value:");
rangeSliderValue1.setHorizontalAlignment(JLabel.LEFT);
rangeSliderValue2.setHorizontalAlignment(JLabel.LEFT);
rangeSlider.setPreferredSize(new Dimension(240, rangeSlider.getPreferredSize().height));
rangeSlider.setMinimum(0);
rangeSlider.setMaximum(10);
// Add listener to update display.
rangeSlider.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
RangeSlider slider = (RangeSlider) e.getSource();
rangeSliderValue1.setText(String.valueOf(slider.getValue()));
rangeSliderValue2.setText(String.valueOf(slider.getUpperValue()));
}
});
add(rangeSliderLabel1, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0,
GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(0, 0, 3, 3), 0, 0));
add(rangeSliderValue1, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0,
GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(0, 0, 3, 0), 0, 0));
add(rangeSliderLabel2, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0,
GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(0, 0, 3, 3), 0, 0));
add(rangeSliderValue2, new GridBagConstraints(1, 1, 1, 1, 0.0, 0.0,
GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(0, 0, 6, 0), 0, 0));
add(rangeSlider , new GridBagConstraints(0, 2, 2, 1, 0.0, 0.0,
GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
}
public void display() {
// Initialize values.
rangeSlider.setValue(3);
rangeSlider.setUpperValue(7);
// Initialize value display.
rangeSliderValue1.setText(String.valueOf(rangeSlider.getValue()));
rangeSliderValue2.setText(String.valueOf(rangeSlider.getUpperValue()));
// Create window frame.
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setTitle("Range Slider Demo");
// Set window content and validate.
frame.getContentPane().setLayout(new BorderLayout());
frame.getContentPane().add(this, BorderLayout.CENTER);
frame.pack();
// Set window location and display.
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
/**
* Main application method.
* @param args String[]
*/
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception ex) {
ex.printStackTrace();
}
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new RangeSliderDemo().display();
}
});
}
}