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

Scrollbar.set{Value,Values()} fails to generate an AdjustmentEvent

XMLWordPrintable

    • sparc
    • solaris_7

      Problem
      -------

      java.awt.Scrollbar.setValue() and java.awt.Scrollbar.setValues() fail to
      generate an java.awt.event.AdjustmentEvent.

      It is expected that such method calls should propagate a:

      java.awt.event.AdjustmentEvent

      Code Example
      ------------

      import java.awt.*;
      import java.awt.event.*;

      public class ScrollbarTest {
          static boolean flag = true;

          public static void main(String argv[]) {

              final Frame f = new Frame();
              final Panel p = new Panel();
              final Scrollbar s = new Scrollbar(Scrollbar.VERTICAL);
              final Button b1 = new Button("setValues() - plural");
              final Button b2 = new Button("setValue() - singular");
              final Button b3 = new Button("hide/show");
              final Button b4 = new Button("reset");
              final TextArea ta = new TextArea("Adjustment Events \n",
      15,2,TextArea.SCROLLBARS_VERTICAL_ONLY);

              s.addAdjustmentListener(new AdjustmentListener() {public void
      adjustmentValueChanged(AdjustmentEvent ae){
                      System.out.println(ae);
                      ta.append(ae.toString()+"\n");
              }});

      // setValues()
      //
              b1.addActionListener(new ActionListener(){public void
      actionPerformed(ActionEvent ae){
                      for (int i = 0; i <10; i++)
      s.setValues(i,i,i,i);
              }});

      // setValue()
      //
              b2.addActionListener(new ActionListener(){public void
      actionPerformed(ActionEvent ae){
                          s.setValue(5);
              }});

              b3.addActionListener(new ActionListener(){public void
      actionPerformed(ActionEvent ae){
                      s.setVisible(getFlag());
              }});

              b4.addActionListener(new ActionListener(){public void
      actionPerformed(ActionEvent ae){
                      s.setValues(5,3,1,10);
              }});


              f.setLayout(new BorderLayout());
              p.add(b1);
              p.add(b2);
              p.add(b3);
              p.add(b4);
              f.add(p, BorderLayout.CENTER);
              f.add(s, BorderLayout.EAST);
              f.add(ta, BorderLayout.SOUTH);
              f.setSize(750,400);
              f.setVisible(true);

          }

          static boolean getFlag(){
                  flag = !flag;
                  return flag;
          }
      }



      To Reproduce
      ------------

      Install Solaris 7 / SPARC.

      Obtain JDK 1.1.7B:

      java -version
      java version "1.1.7B"

      Sometimes known as:

      java -fullversion
      java full version "JDK1.1.7U"

      (Why I don't know :-)

      Compile the above code.

      javac ScrollbarTest

      Run:
      java ScrollbarTest


      Observe:

      No AdjustmentEvents are observed when programmatically
      setValue()/setValues().

      The failure is also demonstrable using:

      java full version "JDK1.1.6N"

      a previous "reference" JDK.

            dmendenhsunw David Mendenhall (Inactive)
            duke J. Duke
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: