Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-4083415

setBorder() does not work for JCheckBox and JRadioButton

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P4 P4
    • 1.2.0
    • 1.1.5, 1.2.0
    • client-libs
    • None
    • 1.2beta2
    • generic, x86
    • generic, windows_95
    • Verified


      When setBorder(new LineBorder(Color.blue, 2)) is invoked on a JCheckBox
      or on a JRadioButton, the border of the checkbox/radiobutton is not
      set to a blue line border.

      The following application demonstrates this.
      ============================================================================
      import com.sun.java.swing.*;
      import com.sun.java.swing.border.LineBorder;
      import com.sun.java.swing.basic.BasicBezelBorder;
      import java.awt.BorderLayout;
      import java.awt.Color;
      import java.awt.Label;
      import java.awt.event.ItemEvent;
      import java.awt.event.ItemListener;
      import java.awt.event.WindowAdapter;
      import java.awt.event.WindowEvent;
      import java.awt.event.WindowListener;


      /**
       * An application that displays a bordered JButton, a bordered JCheckBox,
       * a bordered JRadioButton, and a "Set Border" checkbox.
       * Selecting the "Set Border" checkbox should cause the JButton, JCheckBox,
       * and JRadioButton to become bordered with a blue line border.
       */
      public class borderbug extends JBufferedPane {
          static JFrame frame;
          static JButton button = new JButton("JButton");
          static JCheckBox checkbox = new JCheckBox("JCheckBox");
          static JRadioButton radiobutton = new JRadioButton("JRadioButton");
          static JCheckBox setborder = new JCheckBox("Set Border");

          public borderbug() {
      super(true);

              // Register a listener for the setborder checkbox
      setborder.addItemListener(new CheckBoxListener());

      button.setBorderPainted(true);
      checkbox.setBorderPainted(true);
      radiobutton.setBorderPainted(true);

      setLayout(new BorderLayout());
      Box container1 = new Box(BoxLayout.Y_AXIS);
      Box container2 = new Box(BoxLayout.Y_AXIS);
      container1.add(container1.createVerticalStrut(10));
      container1.add(setborder);
      container2.add(container2.createVerticalStrut(10));
      container2.add(button);
      container2.add(container2.createVerticalStrut(15));
      container2.add(checkbox);
      container2.add(container2.createVerticalStrut(15));
      container2.add(radiobutton);
      container2.add(container2.createVerticalStrut(15));
      add(BorderLayout.WEST, container1);
              add(BorderLayout.EAST, container2);
              add(BorderLayout.SOUTH, new Label("Select checkbox on left to border components on right with a blue line border."));
          }


          /** Listens to the setborder checkbox */
          class CheckBoxListener implements ItemListener {
      public void itemStateChanged(ItemEvent e) {
      if (setborder.isSelected()) {
         button.setBorder(new LineBorder(Color.blue, 2));
      checkbox.setBorder(new LineBorder(Color.blue, 2));
      radiobutton.setBorder(new LineBorder(Color.blue, 2));
      repaint();
      System.out.println("\nButton border: " + button.getBorder());
      System.out.println("Checkbox border: " + checkbox.getBorder());
      System.out.println("Radiobutton border: " + radiobutton.getBorder());
      }
      else {
      button.setBorder(new BasicBezelBorder());
      checkbox.setBorder(new BasicBezelBorder());
      radiobutton.setBorder(new BasicBezelBorder());
      repaint();
      System.out.println("\nButton border: " + button.getBorder());
      System.out.println("Checkbox border: " + checkbox.getBorder());
      System.out.println("Radiobutton border: " + radiobutton.getBorder());
      }
      }
          }

          public static void main(String s[]) {
               WindowListener l = new WindowAdapter() {
                   public void windowClosing(WindowEvent e) {System.exit(0);}
               };
       
               frame = new JFrame("borderbug");
               frame.addWindowListener(l);
               frame.add("Center", new borderbug());
               frame.pack();
               frame.setVisible(true);

         System.out.println("Button border: " + button.getBorder());
      System.out.println("Checkbox border: " + checkbox.getBorder());
      System.out.println("Radiobutton border: " + radiobutton.getBorder());
          }
      }
      ==============================================================================


            jeff Jeff Dinkins
            gaurisha Gauri Sharma (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: