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

API doc for BasicButtonUI.installUI() isn't clear

XMLWordPrintable

    • sparc
    • solaris_2.6



      Name: apR10229 Date: 06/15/2003


      Filed By : SPB JCK team (###@###.###)
      JDK : java full version "1.5.0-beta-b07"
      JCK : 1.5
      Platform[s] : Solaris
      switch/Mode :
      JCK test owner : http://javaweb.eng/jct/sqe/JCK-tck/usr/owners.jto
      Failing Test [s] :
          api/javax_swing/plaf/basic/BasicButtonUI/index.html#public[BasicButtonUI0002]


      Problem description
      ===================
      Specification of the javax.swing.plaf.basic.BasicButtonUI.installUI()
      method is not clear. It does not specify what will happen if
      we install UI more than once, e.g. if we try to install UI over
      another previously installed UI we'll get internal API errors.
      Documentation does not describe this kind of method's behavior,
      though, installing UI several times on the same components should
      be explicitly specified. To see how it works, run the example below.

          
      Minimized test:
      ===============
      ------- StubBasicButtonUI.java -------
      import javax.swing.*;
      import javax.swing.plaf.basic.*;
      import javax.swing.event.*;
      import java.util.*;
      import java.beans.*;

      public class StubBasicButtonUI extends BasicButtonUI {
        static JButton button = null;

        public StubBasicButtonUI() {
          super();
        }
        
        public BasicButtonListener createButtonListener(AbstractButton b) {
          return new BasicButtonListener(b) {
      public void propertyChange(PropertyChangeEvent e) {}
            };
        }

        public static void main(String[] argv) {
          button = new JButton("Test");
          StubBasicButtonUI ui = new StubBasicButtonUI();
          System.out.println("BEFORE installUI()");
          printListeners();
          ui.installUI(button);
          System.out.println("AFTER installUI()");
          printListeners();
          ui.uninstallUI(button);
          System.out.println("AFTER uninstallUI()");
          printListeners();

        }

        static void printListeners() {
          EventListener[] list = button.getListeners(ChangeListener.class);
          int count = list.length;
          System.out.println("Button contains "+count+" ChangeListeners");
          for (int i=0; i<count; i++) {
            System.out.println(" "+list[i].toString());
          }
        }
      }

      ------- end-of-StubBasicButtonUI.java -------

      Minimized test output:
      ======================
      BEFORE installUI()
      Button contains 1 ChangeListeners
          javax.swing.plaf.basic.BasicButtonListener@1e9cb75
      AFTER installUI()
      Button contains 2 ChangeListeners
          StubBasicButtonUI$1@2c84d9
          javax.swing.plaf.basic.BasicButtonListener@1e9cb75
      AFTER uninstallUI()
      Button contains 1 ChangeListeners
          StubBasicButtonUI$1@2c84d9


      JCK test source location:
      ==========================
      /java/re/jck/1.5/promoted/latest/JCK-runtime-15/tests

      Test output:
      =============
      BasicButtonUI0002: Failed. Method uninstallUI does not uninstall listeners.

      Specific Machine Info:
      =====================
      SunOS archer 5.8 Generic_108528-20 sun4u sparc SUNW,Ultra-4

      ======================================================================

            kwalrathsunw Kathy Walrath (Inactive)
            pavsunw Pav Pav (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: