| /* |
| * |
| * Copyright (c) 2007, 2021, Oracle and/or its affiliates. All rights reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions |
| * are met: |
| * |
| * - Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * |
| * - Redistributions in binary form must reproduce the above copyright |
| * notice, this list of conditions and the following disclaimer in the |
| * documentation and/or other materials provided with the distribution. |
| * |
| * - Neither the name of Oracle nor the names of its |
| * contributors may be used to endorse or promote products derived |
| * from this software without specific prior written permission. |
| * |
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS |
| * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, |
| * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
| * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
| * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
| * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
| * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
| * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF |
| * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
| * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
| * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| */ |
| |
| import javax.swing.BoundedRangeModel; |
| import javax.swing.Box; |
| import javax.swing.BoxLayout; |
| import javax.swing.DefaultBoundedRangeModel; |
| import javax.swing.JLabel; |
| import javax.swing.JPanel; |
| import javax.swing.JSlider; |
| import javax.swing.border.BevelBorder; |
| import javax.swing.border.TitledBorder; |
| import javax.swing.event.ChangeEvent; |
| import javax.swing.event.ChangeListener; |
| |
| import java.awt.BorderLayout; |
| import java.awt.GridLayout; |
| import java.util.Dictionary; |
| |
| /** |
| * JSlider Demo |
| * |
| * @author Dave Kloba |
| * @author Jeff Dinkins |
| */ |
| public class SliderDemo extends DemoModule { |
| |
| /** |
| * main method allows us to run as a standalone demo. |
| */ |
| public static void main(String[] args) { |
| SliderDemo demo = new SliderDemo(null); |
| demo.mainImpl(); |
| } |
| |
| /** |
| * SliderDemo Constructor |
| */ |
| public SliderDemo(SwingSet2 swingset) { |
| // Set the title for this demo, and an icon used to represent this |
| // demo inside the SwingSet2 app. |
| super(swingset, "SliderDemo", "toolbar/JSlider.gif"); |
| |
| createSliderDemo(); |
| } |
| |
| public void createSliderDemo() { |
| JSlider s; |
| JPanel hp; |
| JPanel vp; |
| GridLayout g; |
| JPanel tp; |
| JLabel tf; |
| ChangeListener listener; |
| |
| getDemoPanel().setLayout(new BorderLayout()); |
| |
| tf = new JLabel(getString("SliderDemo.slidervalue")); |
| getDemoPanel().add(tf, BorderLayout.SOUTH); |
| |
| tp = new JPanel(); |
| g = new GridLayout(1, 2); |
| g.setHgap(5); |
| g.setVgap(5); |
| tp.setLayout(g); |
| getDemoPanel().add(tp, BorderLayout.CENTER); |
| |
| listener = new SliderListener(tf); |
| |
| BevelBorder border = new BevelBorder(BevelBorder.LOWERED); |
| |
| hp = new JPanel(); |
| hp.setLayout(new BoxLayout(hp, BoxLayout.Y_AXIS)); |
| hp.setBorder(new TitledBorder( |
| border, |
| getString("SliderDemo.horizontal"), |
| TitledBorder.LEFT, |
| TitledBorder.ABOVE_TOP)); |
| tp.add(hp); |
| |
| vp = new JPanel(); |
| vp.setLayout(new BoxLayout(vp, BoxLayout.X_AXIS)); |
| vp.setBorder(new TitledBorder( |
| border, |
| getString("SliderDemo.vertical"), |
| TitledBorder.LEFT, |
| TitledBorder.ABOVE_TOP)); |
| tp.add(vp); |
| |
| // Horizontal Slider 1 |
| JPanel p = new JPanel(); |
| p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS)); |
| p.setBorder(new TitledBorder(getString("SliderDemo.plain"))); |
| s = new JSlider(-10, 100, 20); |
| s.getAccessibleContext().setAccessibleName(getString("SliderDemo.plain")); |
| s.getAccessibleContext().setAccessibleDescription(getString("SliderDemo.a_plain_slider")); |
| s.addChangeListener(listener); |
| |
| p.add(Box.createRigidArea(VGAP5)); |
| p.add(s); |
| p.add(Box.createRigidArea(VGAP5)); |
| hp.add(p); |
| hp.add(Box.createRigidArea(VGAP10)); |
| |
| // Horizontal Slider 2 |
| p = new JPanel(); |
| p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS)); |
| p.setBorder(new TitledBorder(getString("SliderDemo.majorticks"))); |
| s = new JSlider(100, 1000, 400); |
| s.setPaintTicks(true); |
| s.setMajorTickSpacing(100); |
| s.getAccessibleContext().setAccessibleName(getString("SliderDemo.majorticks")); |
| s.getAccessibleContext().setAccessibleDescription(getString("SliderDemo.majorticksdescription")); |
| s.addChangeListener(listener); |
| |
| p.add(Box.createRigidArea(VGAP5)); |
| p.add(s); |
| p.add(Box.createRigidArea(VGAP5)); |
| hp.add(p); |
| hp.add(Box.createRigidArea(VGAP10)); |
| |
| // Horizontal Slider 3 |
| p = new JPanel(); |
| p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS)); |
| p.setBorder(new TitledBorder(getString("SliderDemo.ticks"))); |
| s = new JSlider(0, 11, 6); |
| |
| s.putClientProperty("JSlider.isFilled", Boolean.TRUE ); |
| |
| s.setPaintTicks(true); |
| s.setMajorTickSpacing(5); |
| s.setMinorTickSpacing(1); |
| |
| s.setPaintLabels( true ); |
| s.setSnapToTicks( true ); |
| |
| @SuppressWarnings("unchecked") |
| Dictionary<Object, Object> labelTable = s.getLabelTable(); |
| labelTable.put(Integer.valueOf(11), new JLabel(Integer.valueOf(11).toString(), JLabel.CENTER)); |
| s.setLabelTable( s.getLabelTable() ); |
| |
| s.getAccessibleContext().setAccessibleName(getString("SliderDemo.minorticks")); |
| s.getAccessibleContext().setAccessibleDescription(getString("SliderDemo.minorticksdescription")); |
| |
| s.addChangeListener(listener); |
| |
| p.add(Box.createRigidArea(VGAP5)); |
| p.add(s); |
| p.add(Box.createRigidArea(VGAP5)); |
| hp.add(p); |
| hp.add(Box.createRigidArea(VGAP10)); |
| |
| // Horizontal Slider 4 |
| p = new JPanel(); |
| p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS)); |
| p.setBorder(new TitledBorder(getString("SliderDemo.disabled"))); |
| BoundedRangeModel brm = new DefaultBoundedRangeModel(80, 0, 0, 100); |
| s = new JSlider(brm); |
| s.setPaintTicks(true); |
| s.setMajorTickSpacing(20); |
| s.setMinorTickSpacing(5); |
| s.setEnabled(false); |
| s.getAccessibleContext().setAccessibleName(getString("SliderDemo.disabled")); |
| s.getAccessibleContext().setAccessibleDescription(getString("SliderDemo.disableddescription")); |
| s.addChangeListener(listener); |
| |
| p.add(Box.createRigidArea(VGAP5)); |
| p.add(s); |
| p.add(Box.createRigidArea(VGAP5)); |
| hp.add(p); |
| |
| ////////////////////////////////////////////////////////////////////////////// |
| |
| // Vertical Slider 1 |
| p = new JPanel(); |
| p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS)); |
| p.setBorder(new TitledBorder(getString("SliderDemo.plain"))); |
| s = new JSlider(JSlider.VERTICAL, -10, 100, 20); |
| s.getAccessibleContext().setAccessibleName(getString("SliderDemo.plain")); |
| s.getAccessibleContext().setAccessibleDescription(getString("SliderDemo.a_plain_slider")); |
| s.addChangeListener(listener); |
| p.add(Box.createRigidArea(HGAP10)); |
| p.add(s); |
| p.add(Box.createRigidArea(HGAP10)); |
| vp.add(p); |
| vp.add(Box.createRigidArea(HGAP10)); |
| |
| // Vertical Slider 2 |
| p = new JPanel(); |
| p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS)); |
| p.setBorder(new TitledBorder(getString("SliderDemo.majorticks"))); |
| s = new JSlider(JSlider.VERTICAL, 100, 1000, 400); |
| |
| s.putClientProperty( "JSlider.isFilled", Boolean.TRUE ); |
| |
| s.setPaintTicks(true); |
| s.setMajorTickSpacing(100); |
| s.getAccessibleContext().setAccessibleName(getString("SliderDemo.majorticks")); |
| s.getAccessibleContext().setAccessibleDescription(getString("SliderDemo.majorticksdescription")); |
| s.addChangeListener(listener); |
| p.add(Box.createRigidArea(HGAP25)); |
| p.add(s); |
| p.add(Box.createRigidArea(HGAP25)); |
| vp.add(p); |
| vp.add(Box.createRigidArea(HGAP5)); |
| |
| // Vertical Slider 3 |
| p = new JPanel(); |
| p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS)); |
| p.setBorder(new TitledBorder(getString("SliderDemo.minorticks"))); |
| s = new JSlider(JSlider.VERTICAL, 0, 100, 60); |
| s.setPaintTicks(true); |
| s.setMajorTickSpacing(20); |
| s.setMinorTickSpacing(5); |
| |
| s.setPaintLabels( true ); |
| |
| s.getAccessibleContext().setAccessibleName(getString("SliderDemo.minorticks")); |
| s.getAccessibleContext().setAccessibleDescription(getString("SliderDemo.minorticksdescription")); |
| |
| s.addChangeListener(listener); |
| p.add(Box.createRigidArea(HGAP10)); |
| p.add(s); |
| p.add(Box.createRigidArea(HGAP10)); |
| vp.add(p); |
| vp.add(Box.createRigidArea(HGAP5)); |
| |
| // Vertical Slider 4 |
| p = new JPanel(); |
| p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS)); |
| p.setBorder(new TitledBorder(getString("SliderDemo.disabled"))); |
| s = new JSlider(JSlider.VERTICAL, 0, 100, 80); |
| s.setPaintTicks(true); |
| s.setMajorTickSpacing(20); |
| s.setMinorTickSpacing(5); |
| s.setEnabled(false); |
| s.getAccessibleContext().setAccessibleName(getString("SliderDemo.disabled")); |
| s.getAccessibleContext().setAccessibleDescription(getString("SliderDemo.disableddescription")); |
| s.addChangeListener(listener); |
| p.add(Box.createRigidArea(HGAP20)); |
| p.add(s); |
| p.add(Box.createRigidArea(HGAP20)); |
| vp.add(p); |
| } |
| |
| class SliderListener implements ChangeListener { |
| JLabel tf; |
| public SliderListener(JLabel f) { |
| tf = f; |
| } |
| public void stateChanged(ChangeEvent e) { |
| JSlider s1 = (JSlider)e.getSource(); |
| tf.setText(getString("SliderDemo.slidervalue") + s1.getValue()); |
| } |
| } |
| } |