-
Bug
-
Resolution: Not an Issue
-
P4
-
8, 9, 10
-
x86
-
other
FULL PRODUCT VERSION :
1.8.0_66
1.8.0_131
ADDITIONAL OS VERSION INFORMATION :
Windows 10
A DESCRIPTION OF THE PROBLEM :
we encountered a situation in which we load a text area with a large amount of text
and there was a case that the UI was not responding for about 2-3 minutes
after investigation i realized that the problem was because the text contained a Cyrillic character i addition to about 700000 US characters.
**Note that if the text is short -> no problem
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class FrameTest {
public static void main(String[] args) {
JFrame jf = new JFrame("Demo Large Amount of character with non-english chars");
Container cp = jf.getContentPane();
cp.setLayout(new BorderLayout());
JTextArea ta1 = new JTextArea(20, 20);
cp.add(new JScrollPane(ta1), BorderLayout.CENTER);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
for (int i = 0; i < 100000; i++) {
ta1.append(i+" \n");
}
ta1.append("Yandex (Russian: Я́ндекс)");//the problematic text
jf.setSize(700, 700);
jf.setVisible(true);
}
}
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
the dialog should be opened immediately
ACTUAL -
if the problematic row is commented out the dialog open immediately, else it takes about 60 seconds
ERROR MESSAGES/STACK TRACES THAT OCCUR :
"main" #1 prio=5 os_prio=0 tid=0x0000000002486000 nid=0x33a8 runnable [0x000000000247e000]
java.lang.Thread.State: RUNNABLE
at javax.swing.text.GlyphView.getBreakSpot(GlyphView.java:791)
at javax.swing.text.GlyphView.getMinimumSpan(GlyphView.java:551)
at javax.swing.text.ParagraphView.calculateMinorAxisRequirements(ParagraphView.java:724)
at javax.swing.plaf.basic.BasicTextAreaUI$PlainParagraph.calculateMinorAxisRequirements(BasicTextAreaUI.java:272)
at javax.swing.text.BoxView.checkRequests(BoxView.java:935)
at javax.swing.text.BoxView.getMinimumSpan(BoxView.java:568)
at javax.swing.text.BoxView.calculateMinorAxisRequirements(BoxView.java:903)
at javax.swing.text.BoxView.checkRequests(BoxView.java:935)
at javax.swing.text.BoxView.setSpanOnAxis(BoxView.java:343)
at javax.swing.text.BoxView.layout(BoxView.java:708)
at javax.swing.text.BoxView.setSize(BoxView.java:397)
at javax.swing.plaf.basic.BasicTextUI$RootView.setSize(BasicTextUI.java:1722)
at javax.swing.plaf.basic.BasicTextUI.getPreferredSize(BasicTextUI.java:917)
at javax.swing.plaf.basic.BasicTextAreaUI.getPreferredSize(BasicTextAreaUI.java:120)
at javax.swing.JComponent.getPreferredSize(JComponent.java:1662)
at javax.swing.JTextArea.getPreferredSize(JTextArea.java:618)
at javax.swing.ScrollPaneLayout.layoutContainer(ScrollPaneLayout.java:791)
at java.awt.Container.layout(Container.java:1510)
at java.awt.Container.doLayout(Container.java:1499)
at java.awt.Container.validateTree(Container.java:1695)
at java.awt.Container.validateTree(Container.java:1704)
at java.awt.Container.validateTree(Container.java:1704)
at java.awt.Container.validateTree(Container.java:1704)
at java.awt.Container.validateTree(Container.java:1704)
at java.awt.Container.validate(Container.java:1630)
- locked <0x00000005c3ec3ba8> (a java.awt.Component$AWTTreeLock)
at java.awt.Container.validateUnconditionally(Container.java:1667)
- locked <0x00000005c3ec3ba8> (a java.awt.Component$AWTTreeLock)
at java.awt.Window.show(Window.java:1033)
at java.awt.Component.show(Component.java:1673)
at java.awt.Component.setVisible(Component.java:1625)
at java.awt.Window.setVisible(Window.java:1014)
at com.skybox.view.app.FrameTest.main(FrameTest.java:25)
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class FrameTest {
public static void main(String[] args) {
JFrame jf = new JFrame("Demo Large Amount of character with non-english chars");
Container cp = jf.getContentPane();
cp.setLayout(new BorderLayout());
JTextArea ta1 = new JTextArea(20, 20);
cp.add(new JScrollPane(ta1), BorderLayout.CENTER);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
for (int i = 0; i < 100000; i++) {
ta1.append(i+" \n");
}
ta1.append("Yandex (Russian: Я́ндекс)");//the problematic text
jf.setSize(700, 700);
jf.setVisible(true);
}
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
NO WORKAROUND FOUND
SUPPORT :
YES
1.8.0_66
1.8.0_131
ADDITIONAL OS VERSION INFORMATION :
Windows 10
A DESCRIPTION OF THE PROBLEM :
we encountered a situation in which we load a text area with a large amount of text
and there was a case that the UI was not responding for about 2-3 minutes
after investigation i realized that the problem was because the text contained a Cyrillic character i addition to about 700000 US characters.
**Note that if the text is short -> no problem
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class FrameTest {
public static void main(String[] args) {
JFrame jf = new JFrame("Demo Large Amount of character with non-english chars");
Container cp = jf.getContentPane();
cp.setLayout(new BorderLayout());
JTextArea ta1 = new JTextArea(20, 20);
cp.add(new JScrollPane(ta1), BorderLayout.CENTER);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
for (int i = 0; i < 100000; i++) {
ta1.append(i+" \n");
}
ta1.append("Yandex (Russian: Я́ндекс)");//the problematic text
jf.setSize(700, 700);
jf.setVisible(true);
}
}
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
the dialog should be opened immediately
ACTUAL -
if the problematic row is commented out the dialog open immediately, else it takes about 60 seconds
ERROR MESSAGES/STACK TRACES THAT OCCUR :
"main" #1 prio=5 os_prio=0 tid=0x0000000002486000 nid=0x33a8 runnable [0x000000000247e000]
java.lang.Thread.State: RUNNABLE
at javax.swing.text.GlyphView.getBreakSpot(GlyphView.java:791)
at javax.swing.text.GlyphView.getMinimumSpan(GlyphView.java:551)
at javax.swing.text.ParagraphView.calculateMinorAxisRequirements(ParagraphView.java:724)
at javax.swing.plaf.basic.BasicTextAreaUI$PlainParagraph.calculateMinorAxisRequirements(BasicTextAreaUI.java:272)
at javax.swing.text.BoxView.checkRequests(BoxView.java:935)
at javax.swing.text.BoxView.getMinimumSpan(BoxView.java:568)
at javax.swing.text.BoxView.calculateMinorAxisRequirements(BoxView.java:903)
at javax.swing.text.BoxView.checkRequests(BoxView.java:935)
at javax.swing.text.BoxView.setSpanOnAxis(BoxView.java:343)
at javax.swing.text.BoxView.layout(BoxView.java:708)
at javax.swing.text.BoxView.setSize(BoxView.java:397)
at javax.swing.plaf.basic.BasicTextUI$RootView.setSize(BasicTextUI.java:1722)
at javax.swing.plaf.basic.BasicTextUI.getPreferredSize(BasicTextUI.java:917)
at javax.swing.plaf.basic.BasicTextAreaUI.getPreferredSize(BasicTextAreaUI.java:120)
at javax.swing.JComponent.getPreferredSize(JComponent.java:1662)
at javax.swing.JTextArea.getPreferredSize(JTextArea.java:618)
at javax.swing.ScrollPaneLayout.layoutContainer(ScrollPaneLayout.java:791)
at java.awt.Container.layout(Container.java:1510)
at java.awt.Container.doLayout(Container.java:1499)
at java.awt.Container.validateTree(Container.java:1695)
at java.awt.Container.validateTree(Container.java:1704)
at java.awt.Container.validateTree(Container.java:1704)
at java.awt.Container.validateTree(Container.java:1704)
at java.awt.Container.validateTree(Container.java:1704)
at java.awt.Container.validate(Container.java:1630)
- locked <0x00000005c3ec3ba8> (a java.awt.Component$AWTTreeLock)
at java.awt.Container.validateUnconditionally(Container.java:1667)
- locked <0x00000005c3ec3ba8> (a java.awt.Component$AWTTreeLock)
at java.awt.Window.show(Window.java:1033)
at java.awt.Component.show(Component.java:1673)
at java.awt.Component.setVisible(Component.java:1625)
at java.awt.Window.setVisible(Window.java:1014)
at com.skybox.view.app.FrameTest.main(FrameTest.java:25)
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class FrameTest {
public static void main(String[] args) {
JFrame jf = new JFrame("Demo Large Amount of character with non-english chars");
Container cp = jf.getContentPane();
cp.setLayout(new BorderLayout());
JTextArea ta1 = new JTextArea(20, 20);
cp.add(new JScrollPane(ta1), BorderLayout.CENTER);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
for (int i = 0; i < 100000; i++) {
ta1.append(i+" \n");
}
ta1.append("Yandex (Russian: Я́ндекс)");//the problematic text
jf.setSize(700, 700);
jf.setVisible(true);
}
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
NO WORKAROUND FOUND
SUPPORT :
YES
- duplicates
-
JDK-8183385 JTextArea (inside JScrollPane) rendering slows down (blocks EDT) with specific characters
-
- Closed
-