ToggleButtonDemo.java revision 13978:1993af50385d
1/* 2 * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23package com.sun.swingset3.demos.togglebutton; 24 25import java.awt.*; 26import java.awt.event.ItemEvent; 27import java.awt.event.ItemListener; 28import java.util.*; 29import java.util.List; 30import javax.swing.*; 31import javax.swing.border.*; 32import javax.swing.event.ChangeEvent; 33import javax.swing.event.ChangeListener; 34 35import com.sun.swingset3.DemoProperties; 36import com.sun.swingset3.demos.ResourceManager; 37 38/** 39 * JButton, JRadioButton, JToggleButton, JCheckBox Demos 40 * 41 * @version 1.15 11/17/05 42 * @author Jeff Dinkins 43 */ 44@DemoProperties( 45 value = "ToggleButtons Demo", 46 category = "Controls", 47 description = "Demonstrates JCheckBox & JRadioButton", 48 sourceFiles = { 49 "com/sun/swingset3/demos/togglebutton/ToggleButtonDemo.java", 50 "com/sun/swingset3/demos/togglebutton/DirectionPanel.java", 51 "com/sun/swingset3/demos/togglebutton/LayoutControlPanel.java", 52 "com/sun/swingset3/demos/ResourceManager.java", 53 "com/sun/swingset3/demos/togglebutton/resources/ToggleButtonDemo.properties", 54 "com/sun/swingset3/demos/togglebutton/resources/images/b1.gif", 55 "com/sun/swingset3/demos/togglebutton/resources/images/b1d.gif", 56 "com/sun/swingset3/demos/togglebutton/resources/images/b1p.gif", 57 "com/sun/swingset3/demos/togglebutton/resources/images/b1r.gif", 58 "com/sun/swingset3/demos/togglebutton/resources/images/b2.gif", 59 "com/sun/swingset3/demos/togglebutton/resources/images/b2d.gif", 60 "com/sun/swingset3/demos/togglebutton/resources/images/b2p.gif", 61 "com/sun/swingset3/demos/togglebutton/resources/images/b2r.gif", 62 "com/sun/swingset3/demos/togglebutton/resources/images/b3.gif", 63 "com/sun/swingset3/demos/togglebutton/resources/images/b3d.gif", 64 "com/sun/swingset3/demos/togglebutton/resources/images/b3p.gif", 65 "com/sun/swingset3/demos/togglebutton/resources/images/b3r.gif", 66 "com/sun/swingset3/demos/togglebutton/resources/images/bl.gif", 67 "com/sun/swingset3/demos/togglebutton/resources/images/bldn.gif", 68 "com/sun/swingset3/demos/togglebutton/resources/images/bm.gif", 69 "com/sun/swingset3/demos/togglebutton/resources/images/bmdn.gif", 70 "com/sun/swingset3/demos/togglebutton/resources/images/br.gif", 71 "com/sun/swingset3/demos/togglebutton/resources/images/brdn.gif", 72 "com/sun/swingset3/demos/togglebutton/resources/images/c.gif", 73 "com/sun/swingset3/demos/togglebutton/resources/images/cb.gif", 74 "com/sun/swingset3/demos/togglebutton/resources/images/cbr.gif", 75 "com/sun/swingset3/demos/togglebutton/resources/images/cbrs.gif", 76 "com/sun/swingset3/demos/togglebutton/resources/images/cbs.gif", 77 "com/sun/swingset3/demos/togglebutton/resources/images/cdn.gif", 78 "com/sun/swingset3/demos/togglebutton/resources/images/ml.gif", 79 "com/sun/swingset3/demos/togglebutton/resources/images/mldn.gif", 80 "com/sun/swingset3/demos/togglebutton/resources/images/mr.gif", 81 "com/sun/swingset3/demos/togglebutton/resources/images/mrdn.gif", 82 "com/sun/swingset3/demos/togglebutton/resources/images/rb.gif", 83 "com/sun/swingset3/demos/togglebutton/resources/images/rbp.gif", 84 "com/sun/swingset3/demos/togglebutton/resources/images/rbr.gif", 85 "com/sun/swingset3/demos/togglebutton/resources/images/rbrs.gif", 86 "com/sun/swingset3/demos/togglebutton/resources/images/rbs.gif", 87 "com/sun/swingset3/demos/togglebutton/resources/images/tl.gif", 88 "com/sun/swingset3/demos/togglebutton/resources/images/tldn.gif", 89 "com/sun/swingset3/demos/togglebutton/resources/images/tm.gif", 90 "com/sun/swingset3/demos/togglebutton/resources/images/tmdn.gif", 91 "com/sun/swingset3/demos/togglebutton/resources/images/ToggleButtonDemo.gif", 92 "com/sun/swingset3/demos/togglebutton/resources/images/tr.gif", 93 "com/sun/swingset3/demos/togglebutton/resources/images/trdn.gif" 94 } 95) 96public class ToggleButtonDemo extends JPanel implements ChangeListener { 97 98 private static final Dimension HGAP10 = new Dimension(10, 1); 99 private static final Dimension HGAP20 = new Dimension(20, 1); 100 private static final Dimension VGAP20 = new Dimension(1, 20); 101 private static final Dimension VGAP30 = new Dimension(1, 30); 102 103 static final ResourceManager resourceManager = new ResourceManager(ToggleButtonDemo.class); 104 public static final String RADIO3 = resourceManager.getString("ToggleButtonDemo.radio3"); 105 public static final String RADIO2 = resourceManager.getString("ToggleButtonDemo.radio2"); 106 public static final String RADIO1 = resourceManager.getString("ToggleButtonDemo.radio1"); 107 public static final String IMAGE_RADIO_BUTTONS = resourceManager.getString("ToggleButtonDemo.imageradiobuttons"); 108 public static final String TEXT_RADIO_BUTTONS = resourceManager.getString("ToggleButtonDemo.textradiobuttons"); 109 public static final String CHECK3 = resourceManager.getString("ToggleButtonDemo.check3"); 110 public static final String CHECK2 = resourceManager.getString("ToggleButtonDemo.check2"); 111 public static final String CHECK1 = resourceManager.getString("ToggleButtonDemo.check1"); 112 public static final String CHECK_BOXES = resourceManager.getString("ToggleButtonDemo.checkboxes"); 113 public static final String IMAGE_CHECKBOXES = resourceManager.getString("ToggleButtonDemo.imagecheckboxes"); 114 public static final String TEXT_CHECKBOXES = resourceManager.getString("ToggleButtonDemo.textcheckboxes"); 115 public static final String CONTENT_FILLED = resourceManager.getString("ToggleButtonDemo.contentfilled"); 116 public static final String ENABLED = resourceManager.getString("ToggleButtonDemo.enabled"); 117 public static final String PAINT_FOCUS = resourceManager.getString("ToggleButtonDemo.paintfocus"); 118 public static final String PAINT_BORDER = resourceManager.getString("ToggleButtonDemo.paintborder"); 119 public static final String DISPLAY_OPTIONS = resourceManager.getString("ToggleButtonDemo.controlpanel_label"); 120 public static final String DEFAULT = resourceManager.getString("ToggleButtonDemo.default"); 121 public static final String PAD_AMOUNT = resourceManager.getString("ToggleButtonDemo.padamount_label"); 122 123 private final JTabbedPane tab; 124 125 private final JPanel checkboxPanel = new JPanel(); 126 private final JPanel radioButtonPanel = new JPanel(); 127 128 private final List<JButton> buttons = new ArrayList<>(); 129 private final List<JCheckBox> checkboxes = new ArrayList<>(); 130 private final List<JRadioButton> radiobuttons = new ArrayList<>(); 131 private final List<JToggleButton> togglebuttons = new ArrayList<>(); 132 133 private List<? extends JComponent> currentControls = buttons; 134 135 private final EmptyBorder border5 = new EmptyBorder(5, 5, 5, 5); 136 137 private ItemListener buttonDisplayListener = null; 138 private ItemListener buttonPadListener = null; 139 140 private final Insets insets0 = new Insets(0, 0, 0, 0); 141 private final Insets insets10 = new Insets(10, 10, 10, 10); 142 143 private final Border loweredBorder = new CompoundBorder( 144 new SoftBevelBorder(SoftBevelBorder.LOWERED), new EmptyBorder(5, 5, 5, 5)); 145 146 /** 147 * main method allows us to run as a standalone demo. 148 * 149 * @param args 150 */ 151 public static void main(String[] args) { 152 JFrame frame = new JFrame(ToggleButtonDemo.class.getAnnotation(DemoProperties.class).value()); 153 154 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 155 frame.getContentPane().add(new ToggleButtonDemo()); 156 frame.setPreferredSize(new Dimension(800, 600)); 157 frame.pack(); 158 frame.setLocationRelativeTo(null); 159 frame.setVisible(true); 160 } 161 162 /** 163 * ButtonDemo Constructor 164 */ 165 public ToggleButtonDemo() { 166 setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); 167 168 tab = new JTabbedPane(); 169 tab.getModel().addChangeListener(this); 170 171 add(tab); 172 173 //addButtons(); 174 addRadioButtons(); 175 addCheckBoxes(); 176 //addToggleButtons(); 177 currentControls = checkboxes; 178 } 179 180 private void addRadioButtons() { 181 ButtonGroup group = new ButtonGroup(); 182 183 tab.addTab(resourceManager.getString("ToggleButtonDemo.radiobuttons"), radioButtonPanel); 184 radioButtonPanel.setLayout(new BoxLayout(radioButtonPanel, BoxLayout.X_AXIS)); 185 radioButtonPanel.setBorder(border5); 186 187 JPanel p1 = createVerticalPanel(true); 188 p1.setAlignmentY(TOP_ALIGNMENT); 189 radioButtonPanel.add(p1); 190 191 // Text Radio Buttons 192 JPanel p2 = createHorizontalPanel(false); 193 p1.add(p2); 194 p2.setBorder(new CompoundBorder( 195 new TitledBorder( 196 null, TEXT_RADIO_BUTTONS, 197 TitledBorder.LEFT, TitledBorder.TOP), border5) 198 ); 199 200 JRadioButton radio = (JRadioButton) p2.add(new JRadioButton(RADIO1)); 201 group.add(radio); 202 radiobuttons.add(radio); 203 p2.add(Box.createRigidArea(HGAP10)); 204 205 radio = (JRadioButton) p2.add(new JRadioButton(RADIO2)); 206 group.add(radio); 207 radiobuttons.add(radio); 208 p2.add(Box.createRigidArea(HGAP10)); 209 210 radio = (JRadioButton) p2.add(new JRadioButton(RADIO3)); 211 group.add(radio); 212 radiobuttons.add(radio); 213 214 // Image Radio Buttons 215 group = new ButtonGroup(); 216 p1.add(Box.createRigidArea(VGAP30)); 217 JPanel p3 = createHorizontalPanel(false); 218 p1.add(p3); 219 p3.setLayout(new BoxLayout(p3, BoxLayout.X_AXIS)); 220 p3.setBorder(new TitledBorder(null, IMAGE_RADIO_BUTTONS, 221 TitledBorder.LEFT, TitledBorder.TOP)); 222 223 // image radio button 1 224 String description = resourceManager.getString("ToggleButtonDemo.customradio"); 225 String text = RADIO1; 226 radio = new JRadioButton(text, resourceManager.createImageIcon("rb.gif", description)); 227 radio.setPressedIcon(resourceManager.createImageIcon("rbp.gif", description)); 228 radio.setRolloverIcon(resourceManager.createImageIcon("rbr.gif", description)); 229 radio.setRolloverSelectedIcon(resourceManager.createImageIcon("rbrs.gif", description)); 230 radio.setSelectedIcon(resourceManager.createImageIcon("rbs.gif", description)); 231 radio.setMargin(new Insets(0, 0, 0, 0)); 232 group.add(radio); 233 p3.add(radio); 234 radiobuttons.add(radio); 235 p3.add(Box.createRigidArea(HGAP20)); 236 237 // image radio button 2 238 text = RADIO2; 239 radio = new JRadioButton(text, resourceManager.createImageIcon("rb.gif", description)); 240 radio.setPressedIcon(resourceManager.createImageIcon("rbp.gif", description)); 241 radio.setRolloverIcon(resourceManager.createImageIcon("rbr.gif", description)); 242 radio.setRolloverSelectedIcon(resourceManager.createImageIcon("rbrs.gif", description)); 243 radio.setSelectedIcon(resourceManager.createImageIcon("rbs.gif", description)); 244 radio.setMargin(new Insets(0, 0, 0, 0)); 245 group.add(radio); 246 p3.add(radio); 247 radiobuttons.add(radio); 248 p3.add(Box.createRigidArea(HGAP20)); 249 250 // image radio button 3 251 text = RADIO3; 252 radio = new JRadioButton(text, resourceManager.createImageIcon("rb.gif", description)); 253 radio.setPressedIcon(resourceManager.createImageIcon("rbp.gif", description)); 254 radio.setRolloverIcon(resourceManager.createImageIcon("rbr.gif", description)); 255 radio.setRolloverSelectedIcon(resourceManager.createImageIcon("rbrs.gif", description)); 256 radio.setSelectedIcon(resourceManager.createImageIcon("rbs.gif", description)); 257 radio.setMargin(new Insets(0, 0, 0, 0)); 258 group.add(radio); 259 radiobuttons.add(radio); 260 p3.add(radio); 261 262 // verticaly glue fills out the rest of the box 263 p1.add(Box.createVerticalGlue()); 264 265 radioButtonPanel.add(Box.createHorizontalGlue()); 266 currentControls = radiobuttons; 267 radioButtonPanel.add(createControls()); 268 } 269 270 private void addCheckBoxes() { 271 tab.addTab(CHECK_BOXES, checkboxPanel); 272 checkboxPanel.setLayout(new BoxLayout(checkboxPanel, BoxLayout.X_AXIS)); 273 checkboxPanel.setBorder(border5); 274 275 JPanel p1 = createVerticalPanel(true); 276 p1.setAlignmentY(TOP_ALIGNMENT); 277 checkboxPanel.add(p1); 278 279 // Text Radio Buttons 280 JPanel p2 = createHorizontalPanel(false); 281 p1.add(p2); 282 p2.setBorder(new CompoundBorder( 283 new TitledBorder( 284 null, TEXT_CHECKBOXES, 285 TitledBorder.LEFT, TitledBorder.TOP), border5) 286 ); 287 288 JCheckBox checkBox1 = new JCheckBox(CHECK1); 289 checkboxes.add(checkBox1); 290 p2.add(checkBox1); 291 p2.add(Box.createRigidArea(HGAP10)); 292 293 JCheckBox checkBox2 = new JCheckBox(CHECK2); 294 checkboxes.add(checkBox2); 295 p2.add(checkBox2); 296 p2.add(Box.createRigidArea(HGAP10)); 297 298 JCheckBox checkBox3 = new JCheckBox(CHECK3); 299 checkboxes.add(checkBox3); 300 p2.add(checkBox3); 301 302 // Image Radio Buttons 303 p1.add(Box.createRigidArea(VGAP30)); 304 JPanel p3 = createHorizontalPanel(false); 305 p1.add(p3); 306 p3.setLayout(new BoxLayout(p3, BoxLayout.X_AXIS)); 307 p3.setBorder(new TitledBorder(null, IMAGE_CHECKBOXES, 308 TitledBorder.LEFT, TitledBorder.TOP)); 309 310 // image checkbox 1 311 String description = resourceManager.getString("ToggleButtonDemo.customcheck"); 312 String text = CHECK1; 313 JCheckBox check = new JCheckBox(text, 314 resourceManager.createImageIcon("cb.gif", description)); 315 check.setRolloverIcon(resourceManager.createImageIcon("cbr.gif", description)); 316 check.setRolloverSelectedIcon(resourceManager.createImageIcon("cbrs.gif", description)); 317 check.setSelectedIcon(resourceManager.createImageIcon("cbs.gif", description)); 318 check.setMargin(new Insets(0, 0, 0, 0)); 319 p3.add(check); 320 checkboxes.add(check); 321 p3.add(Box.createRigidArea(HGAP20)); 322 323 // image checkbox 2 324 text = CHECK2; 325 check = new JCheckBox(text, resourceManager.createImageIcon("cb.gif", description)); 326 check.setRolloverIcon(resourceManager.createImageIcon("cbr.gif", description)); 327 check.setRolloverSelectedIcon(resourceManager.createImageIcon("cbrs.gif", description)); 328 check.setSelectedIcon(resourceManager.createImageIcon("cbs.gif", description)); 329 check.setMargin(new Insets(0, 0, 0, 0)); 330 p3.add(check); 331 checkboxes.add(check); 332 p3.add(Box.createRigidArea(HGAP20)); 333 334 // image checkbox 3 335 text = CHECK3; 336 check = new JCheckBox(text, resourceManager.createImageIcon("cb.gif", description)); 337 check.setRolloverIcon(resourceManager.createImageIcon("cbr.gif", description)); 338 check.setRolloverSelectedIcon(resourceManager.createImageIcon("cbrs.gif", description)); 339 check.setSelectedIcon(resourceManager.createImageIcon("cbs.gif", description)); 340 check.setMargin(new Insets(0, 0, 0, 0)); 341 p3.add(check); 342 checkboxes.add(check); 343 344 // verticaly glue fills out the rest of the box 345 p1.add(Box.createVerticalGlue()); 346 347 checkboxPanel.add(Box.createHorizontalGlue()); 348 currentControls = checkboxes; 349 checkboxPanel.add(createControls()); 350 } 351 352 private JPanel createControls() { 353 JPanel controls = new JPanel() { 354 @Override 355 public Dimension getMaximumSize() { 356 return new Dimension(300, super.getMaximumSize().height); 357 } 358 }; 359 controls.setLayout(new BoxLayout(controls, BoxLayout.Y_AXIS)); 360 controls.setAlignmentY(TOP_ALIGNMENT); 361 controls.setAlignmentX(LEFT_ALIGNMENT); 362 363 JPanel buttonControls = createHorizontalPanel(true); 364 buttonControls.setAlignmentY(TOP_ALIGNMENT); 365 buttonControls.setAlignmentX(LEFT_ALIGNMENT); 366 367 JPanel leftColumn = createVerticalPanel(false); 368 leftColumn.setAlignmentX(LEFT_ALIGNMENT); 369 leftColumn.setAlignmentY(TOP_ALIGNMENT); 370 371 JPanel rightColumn = new LayoutControlPanel(this); 372 373 buttonControls.add(leftColumn); 374 buttonControls.add(Box.createRigidArea(HGAP20)); 375 buttonControls.add(rightColumn); 376 buttonControls.add(Box.createRigidArea(HGAP20)); 377 378 controls.add(buttonControls); 379 380 createListeners(); 381 382 // Display Options 383 JLabel l = new JLabel(DISPLAY_OPTIONS); 384 leftColumn.add(l); 385 386 JCheckBox bordered = new JCheckBox(PAINT_BORDER); 387 bordered.setActionCommand("PaintBorder"); 388 bordered.setToolTipText(resourceManager.getString("ToggleButtonDemo.paintborder_tooltip")); 389 bordered.setMnemonic(resourceManager.getMnemonic("ToggleButtonDemo.paintborder_mnemonic")); 390 if (currentControls == buttons) { 391 bordered.setSelected(true); 392 } 393 bordered.addItemListener(buttonDisplayListener); 394 leftColumn.add(bordered); 395 396 JCheckBox focused = new JCheckBox(PAINT_FOCUS); 397 focused.setActionCommand("PaintFocus"); 398 focused.setToolTipText(resourceManager.getString("ToggleButtonDemo.paintfocus_tooltip")); 399 focused.setMnemonic(resourceManager.getMnemonic("ToggleButtonDemo.paintfocus_mnemonic")); 400 focused.setSelected(true); 401 focused.addItemListener(buttonDisplayListener); 402 leftColumn.add(focused); 403 404 JCheckBox enabled = new JCheckBox(ENABLED); 405 enabled.setActionCommand("Enabled"); 406 enabled.setToolTipText(resourceManager.getString("ToggleButtonDemo.enabled_tooltip")); 407 enabled.setSelected(true); 408 enabled.addItemListener(buttonDisplayListener); 409 enabled.setMnemonic(resourceManager.getMnemonic("ToggleButtonDemo.enabled_mnemonic")); 410 leftColumn.add(enabled); 411 412 JCheckBox filled = new JCheckBox(CONTENT_FILLED); 413 filled.setActionCommand("ContentFilled"); 414 filled.setToolTipText(resourceManager.getString("ToggleButtonDemo.contentfilled_tooltip")); 415 filled.setSelected(true); 416 filled.addItemListener(buttonDisplayListener); 417 filled.setMnemonic(resourceManager.getMnemonic("ToggleButtonDemo.contentfilled_mnemonic")); 418 leftColumn.add(filled); 419 420 leftColumn.add(Box.createRigidArea(VGAP20)); 421 422 l = new JLabel(PAD_AMOUNT); 423 leftColumn.add(l); 424 ButtonGroup group = new ButtonGroup(); 425 JRadioButton defaultPad = new JRadioButton(DEFAULT); 426 defaultPad.setToolTipText(resourceManager.getString("ToggleButtonDemo.default_tooltip")); 427 defaultPad.setMnemonic(resourceManager.getMnemonic("ToggleButtonDemo.default_mnemonic")); 428 defaultPad.addItemListener(buttonPadListener); 429 group.add(defaultPad); 430 defaultPad.setSelected(true); 431 leftColumn.add(defaultPad); 432 433 JRadioButton zeroPad = new JRadioButton(resourceManager.getString("ToggleButtonDemo.zero")); 434 zeroPad.setActionCommand("ZeroPad"); 435 zeroPad.setToolTipText(resourceManager.getString("ToggleButtonDemo.zero_tooltip")); 436 zeroPad.addItemListener(buttonPadListener); 437 zeroPad.setMnemonic(resourceManager.getMnemonic("ToggleButtonDemo.zero_mnemonic")); 438 group.add(zeroPad); 439 leftColumn.add(zeroPad); 440 441 JRadioButton tenPad = new JRadioButton(resourceManager.getString("ToggleButtonDemo.ten")); 442 tenPad.setActionCommand("TenPad"); 443 tenPad.setMnemonic(resourceManager.getMnemonic("ToggleButtonDemo.ten_mnemonic")); 444 tenPad.setToolTipText(resourceManager.getString("ToggleButtonDemo.ten_tooltip")); 445 tenPad.addItemListener(buttonPadListener); 446 group.add(tenPad); 447 leftColumn.add(tenPad); 448 449 leftColumn.add(Box.createRigidArea(VGAP20)); 450 return controls; 451 } 452 453 private void createListeners() { 454 buttonDisplayListener = (ItemEvent e) -> { 455 JCheckBox cb = (JCheckBox) e.getSource(); 456 String command = cb.getActionCommand(); 457 switch (command) { 458 case "Enabled": 459 for (JComponent control : currentControls) { 460 control.setEnabled(cb.isSelected()); 461 control.invalidate(); 462 } 463 break; 464 case "PaintBorder": 465 if (currentControls.get(0) instanceof AbstractButton) { 466 for (JComponent control : currentControls) { 467 AbstractButton b = (AbstractButton) control; 468 b.setBorderPainted(cb.isSelected()); 469 b.invalidate(); 470 } 471 } 472 break; 473 case "PaintFocus": 474 if (currentControls.get(0) instanceof AbstractButton) { 475 for (JComponent control : currentControls) { 476 AbstractButton b = (AbstractButton) control; 477 b.setFocusPainted(cb.isSelected()); 478 b.invalidate(); 479 } 480 } 481 break; 482 case "ContentFilled": 483 if (currentControls.get(0) instanceof AbstractButton) { 484 for (JComponent control : currentControls) { 485 AbstractButton b = (AbstractButton) control; 486 b.setContentAreaFilled(cb.isSelected()); 487 b.invalidate(); 488 } 489 } 490 break; 491 } 492 invalidate(); 493 validate(); 494 repaint(); 495 }; 496 497 buttonPadListener = (ItemEvent e) -> { 498 // *** pad = 0 499 int pad = -1; 500 JRadioButton rb = (JRadioButton) e.getSource(); 501 String command = rb.getActionCommand(); 502 if ("ZeroPad".equals(command) && rb.isSelected()) { 503 pad = 0; 504 } else if ("TenPad".equals(command) && rb.isSelected()) { 505 pad = 10; 506 } 507 508 for (JComponent control : currentControls) { 509 AbstractButton b = (AbstractButton) control; 510 if (pad == -1) { 511 b.setMargin(null); 512 } else if (pad == 0) { 513 b.setMargin(insets0); 514 } else { 515 b.setMargin(insets10); 516 } 517 } 518 invalidate(); 519 validate(); 520 repaint(); 521 }; 522 } 523 524 @Override 525 public void stateChanged(ChangeEvent e) { 526 SingleSelectionModel model = (SingleSelectionModel) e.getSource(); 527 if (model.getSelectedIndex() == 0) { 528 currentControls = buttons; 529 } else if (model.getSelectedIndex() == 1) { 530 currentControls = radiobuttons; 531 } else if (model.getSelectedIndex() == 2) { 532 currentControls = checkboxes; 533 } else { 534 currentControls = togglebuttons; 535 } 536 } 537 538 public List<? extends JComponent> getCurrentControls() { 539 return currentControls; 540 } 541 542 private JPanel createHorizontalPanel(boolean threeD) { 543 JPanel p = new JPanel(); 544 p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS)); 545 p.setAlignmentY(TOP_ALIGNMENT); 546 p.setAlignmentX(LEFT_ALIGNMENT); 547 if (threeD) { 548 p.setBorder(loweredBorder); 549 } 550 return p; 551 } 552 553 private JPanel createVerticalPanel(boolean threeD) { 554 JPanel p = new JPanel(); 555 p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS)); 556 p.setAlignmentY(TOP_ALIGNMENT); 557 p.setAlignmentX(LEFT_ALIGNMENT); 558 if (threeD) { 559 p.setBorder(loweredBorder); 560 } 561 return p; 562 } 563} 564