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

XML serialization of javax.swing.Box fails

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: P4
    • Resolution: Fixed
    • Affects Version/s: 1.4.1, 1.4.2
    • Fix Version/s: 5.0
    • Component/s: client-libs
    • Labels:
    • Subcomponent:
    • Resolved In Build:
      tiger
    • CPU:
      x86
    • OS:
      linux, windows_xp

      Description



      Name: jk109818 Date: 08/07/2003


      FULL PRODUCT VERSION :
      Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.1_03-b02)
      Java HotSpot(TM) Client VM (build 1.4.1_03-b02, mixed mode)


      FULL OS VERSION :
      Linux checkmate 2.4.18-19.8.0 #1 Thu Dec 12 05:39:29 EST 2002 i686 i686 i386 GNU/Linux
      (bug appears on many other 1.4.1 JDK versions)

      A DESCRIPTION OF THE PROBLEM :
      Serializing a JFrame constructed from Boxes (using the Swing Box class) with the java.beans XML serialization does not work properly. Serialization works if the JFrame contains panels, but not if the JFrame contains boxes. When the JFrame containing a box is written, InstantiationExceptions are thrown

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      Use the attached code

      Run
        java SimpleFrame

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      A properly serialized Frame object in the file SimpleFrame.xml
      ACTUAL -
      Frame not saved properly.

      ERROR MESSAGES/STACK TRACES THAT OCCUR :
      % java SimpleFrame

      java.lang.InstantiationException: javax.swing.Box
      Continuing ...
      java.lang.Exception: discarding statement JPanel0.add(Box0);
      Continuing ...
      java.lang.InstantiationException: javax.swing.Box
      Continuing ...
      java.lang.Exception: discarding statement JRootPane$10.addLayoutComponent(Box0, "Center");
      Continuing ...


      REPRODUCIBILITY :
      This bug can be reproduced always.

      ---------- BEGIN SOURCE ----------
      import javax.swing.*;
      import java.awt.event.ActionListener;
      import java.beans.*;
      import java.io.*;

      public class SimpleFrame {
        public void doOne() {
          System.out.println("One button pushed");
        }

        public void doTwo() {
          System.out.println("Two button pushed");
        }

        public JFrame makeUI() {
          JFrame f;
          JButton b1, b2;
          JLabel l3;
          Box vBox;

          f = new JFrame("SimpleFrame");
          f.setSize(400, 300);
          f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          vBox = Box.createVerticalBox();
          b1 = new JButton("One");
          b1.addActionListener((ActionListener)
              EventHandler.create(ActionListener.class, this, "doOne"));
          b2 = new JButton("Two");
          b2.addActionListener((ActionListener)
              EventHandler.create(ActionListener.class, this, "doTwo"));
          l3 = new JLabel("Separator");
          vBox.add(b1); vBox.add(l3); vBox.add(b2);
          f.getContentPane().add(vBox);
          f.setVisible(true);
          return f;
        }

        public static void main(String args[]) {
          SimpleFrame me = new SimpleFrame();
              try {
                  XMLEncoder e = new XMLEncoder(new BufferedOutputStream (
                      new FileOutputStream("SimpleFrame.xml")));
                  e.writeObject(me.makeUI());
                  e.close();
              } catch (IOException e) { e.printStackTrace(); }
        }
      }

      ---------- END SOURCE ----------

      CUSTOMER SUBMITTED WORKAROUND :
      Don't use Boxes. Not a good workaround.
      (Incident Review ID: 193799)
      ======================================================================

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              mdavidsosunw Mark Davidson (Inactive)
              Reporter:
              jkimsunw Jeffrey Kim (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved:
                Imported:
                Indexed: