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

TextField deletes multiline strings

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P3 P3
    • 9
    • 7u65, 8, 9
    • client-libs
    • b100
    • x86
    • windows_xp

      FULL PRODUCT VERSION :
      java version "1.7.0_65"
      Java(TM) SE Runtime Environment (build 1.7.0_65-b19)
      Java HotSpot(TM) Client VM (build 24.65-b04, mixed mode, sharing)
      and
      java version "1.8.0_11"
      Java(TM) SE Runtime Environment (build 1.8.0_11-b12)
      Java HotSpot(TM) Client VM (build 25.11-b03, mixed mode, sharing)

      ADDITIONAL OS VERSION INFORMATION :
      All Windows versions (x86/x64):
      - Microsoft Windows XP [Version 5.1.2600]
      - Microsoft Windows [Version 6.1.7601]
      - Microsoft Windows [Version 6.3.9600]

      A DESCRIPTION OF THE PROBLEM :
      Starting with java-version 1.7 the awt.TextField deletes all strings after the first row in a multiline string, if the method setText() is used. The data is lost! In java-versions from 1.1 to 1.6 the awt.TextField shows the whole multiline string.
      If the showing of the multiline string in java-versions 1.1 to 1.6 was an error which was corrected in version 1.7, I wonder why the awt.Label shows a multiline string in versions 1.7 and 1.8 like in versions 1.1 to 1.6. Shouldn't the display of awt.TextField and awt.Label not be the same after setText()?

      REGRESSION. Last worked in version 6u45

      ADDITIONAL REGRESSION INFORMATION:
      All java-versions until 1.7, for example:
      java version "1.6.0_03"
      Java(TM) SE Runtime Environment (build 1.6.0_03-b05)
      Java HotSpot(TM) Client VM (build 1.6.0_03-b05, mixed mode)

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      Compile the example-program with java 1.6 and run it with versions 1.6, 1.7 and 1.8.

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      The contents of the awt.TextField and awt.Label should display the same in all java-versions.
      ACTUAL -
      The awt.TextField in java-versions 1.7 and 1.8 does not show the whole string.

      REPRODUCIBILITY :
      This bug can be reproduced always.

      ---------- BEGIN SOURCE ----------
      import java.awt.*;

      public class TextFieldBug extends Frame
      {
        public TextFieldBug()
        {
      this.setLayout(new GridLayout(2, 1, 5, 5));

      Label myLabel = new Label();
      TextField myTextField = new TextField();

      this.add( myLabel );
      this.add( myTextField );

      String myTwoRowsString = new String("Row 1 of 2");
      myTwoRowsString = myTwoRowsString + System.getProperty("line.separator");
      myTwoRowsString = myTwoRowsString + new String("Row 2 of 2");

      myLabel.setText( myTwoRowsString );
      myTextField.setText( myTwoRowsString );
         }

         public static void main(String[] args)
        {
      TextFieldBug myTextFieldBug = new TextFieldBug();
      myTextFieldBug.pack();
      myTextFieldBug.setVisible(true);
        }
      }

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

      CUSTOMER SUBMITTED WORKAROUND :
      Use an one-row awt.TextArea instead of an awt.TextField to avoid data loss.

        1. EOL_Behavior.xls
          35 kB
          Ambarish Rapte
        2. ReadSerializedFields.java
          4 kB
          Alexandr Scherbatiy

            arapte Ambarish Rapte
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

              Created:
              Updated:
              Resolved: