1 /* 2 * 3 * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 9 * - Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 12 * - Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in the 14 * documentation and/or other materials provided with the distribution. 15 * 16 * - Neither the name of Oracle nor the names of its 17 * contributors may be used to endorse or promote products derived 18 * from this software without specific prior written permission. 19 * 20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 21 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 22 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 23 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 24 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 25 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 26 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 27 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 28 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 29 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 30 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 */ 32 33 34 import javax.swing.*; 35 import javax.swing.event.*; 36 import javax.swing.text.*; 37 import javax.swing.border.*; 38 import javax.swing.colorchooser.*; 39 import javax.swing.filechooser.*; 40 import javax.accessibility.*; 41 42 import java.awt.*; 43 import java.awt.event.*; 44 import java.beans.*; 45 import java.util.*; 46 import java.io.*; 47 import java.applet.*; 48 import java.net.*; 49 50 /** 51 * JSlider Demo 52 * 53 * @author Dave Kloba 54 * @author Jeff Dinkins 55 */ 56 public class SliderDemo extends DemoModule { 57 58 /** 59 * main method allows us to run as a standalone demo. 60 */ 61 public static void main(String[] args) { 62 SliderDemo demo = new SliderDemo(null); 63 demo.mainImpl(); 64 } 65 66 /** 67 * SliderDemo Constructor 68 */ 69 public SliderDemo(SwingSet2 swingset) { 70 // Set the title for this demo, and an icon used to represent this 71 // demo inside the SwingSet2 app. 72 super(swingset, "SliderDemo", "toolbar/JSlider.gif"); 73 74 createSliderDemo(); 75 } 76 77 public void createSliderDemo() { 78 JSlider s; 79 JPanel hp; 80 JPanel vp; 81 GridLayout g; 82 JPanel tp; 83 JLabel tf; 84 ChangeListener listener; 85 86 getDemoPanel().setLayout(new BorderLayout()); 87 88 tf = new JLabel(getString("SliderDemo.slidervalue")); 89 getDemoPanel().add(tf, BorderLayout.SOUTH); 90 91 tp = new JPanel(); 92 g = new GridLayout(1, 2); 93 g.setHgap(5); 94 g.setVgap(5); 95 tp.setLayout(g); 96 getDemoPanel().add(tp, BorderLayout.CENTER); 97 98 listener = new SliderListener(tf); 99 100 BevelBorder border = new BevelBorder(BevelBorder.LOWERED); 101 102 hp = new JPanel(); 103 hp.setLayout(new BoxLayout(hp, BoxLayout.Y_AXIS)); 104 hp.setBorder(new TitledBorder( 105 border, 106 getString("SliderDemo.horizontal"), 107 TitledBorder.LEFT, 108 TitledBorder.ABOVE_TOP)); 109 tp.add(hp); 110 111 vp = new JPanel(); 112 vp.setLayout(new BoxLayout(vp, BoxLayout.X_AXIS)); 113 vp.setBorder(new TitledBorder( 114 border, 115 getString("SliderDemo.vertical"), 116 TitledBorder.LEFT, 117 TitledBorder.ABOVE_TOP)); 118 tp.add(vp); 119 120 // Horizontal Slider 1 121 JPanel p = new JPanel(); 122 p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS)); 123 p.setBorder(new TitledBorder(getString("SliderDemo.plain"))); 124 s = new JSlider(-10, 100, 20); 125 s.getAccessibleContext().setAccessibleName(getString("SliderDemo.plain")); 126 s.getAccessibleContext().setAccessibleDescription(getString("SliderDemo.a_plain_slider")); 127 s.addChangeListener(listener); 128 129 p.add(Box.createRigidArea(VGAP5)); 130 p.add(s); 131 p.add(Box.createRigidArea(VGAP5)); 132 hp.add(p); 133 hp.add(Box.createRigidArea(VGAP10)); 134 135 // Horizontal Slider 2 136 p = new JPanel(); 137 p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS)); 138 p.setBorder(new TitledBorder(getString("SliderDemo.majorticks"))); 139 s = new JSlider(100, 1000, 400); 140 s.setPaintTicks(true); 141 s.setMajorTickSpacing(100); 142 s.getAccessibleContext().setAccessibleName(getString("SliderDemo.majorticks")); 143 s.getAccessibleContext().setAccessibleDescription(getString("SliderDemo.majorticksdescription")); 144 s.addChangeListener(listener); 145 146 p.add(Box.createRigidArea(VGAP5)); 147 p.add(s); 148 p.add(Box.createRigidArea(VGAP5)); 149 hp.add(p); 150 hp.add(Box.createRigidArea(VGAP10)); 151 152 // Horizontal Slider 3 153 p = new JPanel(); 154 p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS)); 155 p.setBorder(new TitledBorder(getString("SliderDemo.ticks"))); 156 s = new JSlider(0, 11, 6); 157 158 s.putClientProperty("JSlider.isFilled", Boolean.TRUE ); 159 160 s.setPaintTicks(true); 161 s.setMajorTickSpacing(5); 162 s.setMinorTickSpacing(1); 163 164 s.setPaintLabels( true ); 165 s.setSnapToTicks( true ); 166 167 s.getLabelTable().put(new Integer(11), new JLabel(new Integer(11).toString(), JLabel.CENTER)); 168 s.setLabelTable( s.getLabelTable() ); 169 170 s.getAccessibleContext().setAccessibleName(getString("SliderDemo.minorticks")); 171 s.getAccessibleContext().setAccessibleDescription(getString("SliderDemo.minorticksdescription")); 172 173 s.addChangeListener(listener); 174 175 p.add(Box.createRigidArea(VGAP5)); 176 p.add(s); 177 p.add(Box.createRigidArea(VGAP5)); 178 hp.add(p); 179 hp.add(Box.createRigidArea(VGAP10)); 180 181 // Horizontal Slider 4 182 p = new JPanel(); 183 p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS)); 184 p.setBorder(new TitledBorder(getString("SliderDemo.disabled"))); 185 BoundedRangeModel brm = new DefaultBoundedRangeModel(80, 0, 0, 100); 186 s = new JSlider(brm); 187 s.setPaintTicks(true); 188 s.setMajorTickSpacing(20); 189 s.setMinorTickSpacing(5); 190 s.setEnabled(false); 191 s.getAccessibleContext().setAccessibleName(getString("SliderDemo.disabled")); 192 s.getAccessibleContext().setAccessibleDescription(getString("SliderDemo.disableddescription")); 193 s.addChangeListener(listener); 194 195 p.add(Box.createRigidArea(VGAP5)); 196 p.add(s); 197 p.add(Box.createRigidArea(VGAP5)); 198 hp.add(p); 199 200 ////////////////////////////////////////////////////////////////////////////// 201 202 // Vertical Slider 1 203 p = new JPanel(); 204 p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS)); 205 p.setBorder(new TitledBorder(getString("SliderDemo.plain"))); 206 s = new JSlider(JSlider.VERTICAL, -10, 100, 20); 207 s.getAccessibleContext().setAccessibleName(getString("SliderDemo.plain")); 208 s.getAccessibleContext().setAccessibleDescription(getString("SliderDemo.a_plain_slider")); 209 s.addChangeListener(listener); 210 p.add(Box.createRigidArea(HGAP10)); 211 p.add(s); 212 p.add(Box.createRigidArea(HGAP10)); 213 vp.add(p); 214 vp.add(Box.createRigidArea(HGAP10)); 215 216 // Vertical Slider 2 217 p = new JPanel(); 218 p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS)); 219 p.setBorder(new TitledBorder(getString("SliderDemo.majorticks"))); 220 s = new JSlider(JSlider.VERTICAL, 100, 1000, 400); 221 222 s.putClientProperty( "JSlider.isFilled", Boolean.TRUE ); 223 224 s.setPaintTicks(true); 225 s.setMajorTickSpacing(100); 226 s.getAccessibleContext().setAccessibleName(getString("SliderDemo.majorticks")); 227 s.getAccessibleContext().setAccessibleDescription(getString("SliderDemo.majorticksdescription")); 228 s.addChangeListener(listener); 229 p.add(Box.createRigidArea(HGAP25)); 230 p.add(s); 231 p.add(Box.createRigidArea(HGAP25)); 232 vp.add(p); 233 vp.add(Box.createRigidArea(HGAP5)); 234 235 // Vertical Slider 3 236 p = new JPanel(); 237 p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS)); 238 p.setBorder(new TitledBorder(getString("SliderDemo.minorticks"))); 239 s = new JSlider(JSlider.VERTICAL, 0, 100, 60); 240 s.setPaintTicks(true); 241 s.setMajorTickSpacing(20); 242 s.setMinorTickSpacing(5); 243 244 s.setPaintLabels( true ); 245 246 s.getAccessibleContext().setAccessibleName(getString("SliderDemo.minorticks")); 247 s.getAccessibleContext().setAccessibleDescription(getString("SliderDemo.minorticksdescription")); 248 249 s.addChangeListener(listener); 250 p.add(Box.createRigidArea(HGAP10)); 251 p.add(s); 252 p.add(Box.createRigidArea(HGAP10)); 253 vp.add(p); 254 vp.add(Box.createRigidArea(HGAP5)); 255 256 // Vertical Slider 4 257 p = new JPanel(); 258 p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS)); 259 p.setBorder(new TitledBorder(getString("SliderDemo.disabled"))); 260 s = new JSlider(JSlider.VERTICAL, 0, 100, 80); 261 s.setPaintTicks(true); 262 s.setMajorTickSpacing(20); 263 s.setMinorTickSpacing(5); 264 s.setEnabled(false); 265 s.getAccessibleContext().setAccessibleName(getString("SliderDemo.disabled")); 266 s.getAccessibleContext().setAccessibleDescription(getString("SliderDemo.disableddescription")); 267 s.addChangeListener(listener); 268 p.add(Box.createRigidArea(HGAP20)); 269 p.add(s); 270 p.add(Box.createRigidArea(HGAP20)); 271 vp.add(p); 272 } 273 274 class SliderListener implements ChangeListener { 275 JLabel tf; 276 public SliderListener(JLabel f) { 277 tf = f; 278 } 279 public void stateChanged(ChangeEvent e) { 280 JSlider s1 = (JSlider)e.getSource(); 281 tf.setText(getString("SliderDemo.slidervalue") + s1.getValue()); 282 } 283 } 284 }