-
Bug
-
Resolution: Not an Issue
-
P3
-
None
-
1.4.0
-
generic
-
generic
On both Solaris 8 and Windows 2000 with JDK 1.4 beta 3, the following code results in a NullPointerException in javax.swing.text.FlowView.layout. This code works fine on both platforms with JDK 1.3.1.
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.text.*;
import javax.swing.text.html.*;
public class Frame1 extends JFrame
{
JPanel contentPane;
BorderLayout borderLayout1 = new BorderLayout();
JScrollPane jScrollPane1 = new JScrollPane();
/**Construct the frame*/
public Frame1()
{
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try
{
jbInit();
}
catch(Exception e)
{
e.printStackTrace();
}
}
/**Component initialization*/
private void jbInit() throws Exception
{
contentPane = (JPanel) this.getContentPane();
this.setSize(new Dimension(600, 400));
/* Create the editor kit and document */
JTextPane jTextPane1 = new JTextPane();
jTextPane1.setContentType("text/html");
HTMLEditorKit editorKit =
(HTMLEditorKit)jTextPane1.getEditorKit();
/* Set up the text pane */
HTMLDocument doc = (HTMLDocument) jTextPane1.getStyledDocument();
final StyleSheet style = doc.getStyleSheet();
// Commenting out this line prevents the NullPointerException
style.addRule(
"td { color : #00FF00; font-family: Arial; font-size: 18pt; }");
HTMLDocument newdoc = new HTMLDocument(style);
newdoc.setParser(new
javax.swing.text.html.parser.ParserDelegator());
String line =
"<tr><td colspan=3></td></tr>"
+ "<tr><td colspan=3>Oct 23, 2001</td></tr>"
+ "<tr>"
+ "<td><nobr>4:21</nobr></td>"
+ "<td>SOMEUSER</td>"
+ "<tr><td><nobr>4:21</nobr></td><td>SOMEUSER</td><td>"
+ "some dummy words some dummy words some dummy words "
+ "</td></tr>";
editorKit.insertHTML(newdoc,
0,
line,
0,
0,
HTML.Tag.TABLE);
contentPane.add(jScrollPane1, BorderLayout.CENTER);
jTextPane1.setStyledDocument(newdoc);
jScrollPane1.getViewport().add(jTextPane1, null);
}
/**Overridden so we can exit when window is closed*/
protected void processWindowEvent(WindowEvent e)
{
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING)
{
System.exit(0);
}
}
public static void main(String[] args)
{
JFrame frame = new Frame1();
frame.show();
}
}
Error Message:
java.lang.NullPointerException
at javax.swing.text.FlowView.layout(FlowView.java:195)
at javax.swing.text.BoxView.setSize(BoxView.java:382)
at javax.swing.text.BoxView.updateChildSizes(BoxView.java:351)
at javax.swing.text.BoxView.setSpanOnAxis(BoxView.java:333)
at javax.swing.text.BoxView.layout(BoxView.java:685)
at javax.swing.text.BoxView.setSize(BoxView.java:382)
at javax.swing.text.BoxView.updateChildSizes(BoxView.java:346)
at javax.swing.text.BoxView.setSpanOnAxis(BoxView.java:319)
at javax.swing.text.BoxView.layout(BoxView.java:685)
at javax.swing.text.BoxView.setSize(BoxView.java:382)
at javax.swing.text.BoxView.updateChildSizes(BoxView.java:351)
at javax.swing.text.BoxView.setSpanOnAxis(BoxView.java:333)
at javax.swing.text.BoxView.layout(BoxView.java:685)
at javax.swing.text.BoxView.setSize(BoxView.java:382)
at javax.swing.text.BoxView.updateChildSizes(BoxView.java:346)
at javax.swing.text.BoxView.setSpanOnAxis(BoxView.java:319)
at javax.swing.text.BoxView.layout(BoxView.java:685)
at javax.swing.text.BoxView.setSize(BoxView.java:382)
at javax.swing.text.BoxView.updateChildSizes(BoxView.java:351)
at javax.swing.text.BoxView.setSpanOnAxis(BoxView.java:333)
at javax.swing.text.BoxView.layout(BoxView.java:685)
at javax.swing.text.FlowView.layout(FlowView.java:199)
at javax.swing.text.BoxView.setSize(BoxView.java:382)
at javax.swing.text.BoxView.updateChildSizes(BoxView.java:351)
at javax.swing.text.BoxView.setSpanOnAxis(BoxView.java:333)
at javax.swing.text.BoxView.layout(BoxView.java:685)
at javax.swing.text.BoxView.setSize(BoxView.java:382)
at javax.swing.text.BoxView.updateChildSizes(BoxView.java:351)
at javax.swing.text.BoxView.setSpanOnAxis(BoxView.java:333)
at javax.swing.text.BoxView.layout(BoxView.java:685)
at javax.swing.text.BoxView.setSize(BoxView.java:382)
at javax.swing.plaf.basic.BasicTextUI$RootView.setSize(BasicTextUI.java:1536)
at javax.swing.plaf.basic.BasicTextUI.getPreferredSize(BasicTextUI.java:733)
at javax.swing.JComponent.getPreferredSize(JComponent.java:1265)
at javax.swing.JEditorPane.getPreferredSize(JEditorPane.java:1204)
at javax.swing.ScrollPaneLayout.layoutContainer(ScrollPaneLayout.java:770)
at java.awt.Container.layout(Container.java:838)
at java.awt.Container.doLayout(Container.java:828)
at java.awt.Container.validateTree(Container.java:906)
at java.awt.Container.validateTree(Container.java:913)
at java.awt.Container.validateTree(Container.java:913)
at java.awt.Container.validateTree(Container.java:913)
at java.awt.Container.validateTree(Container.java:913)
at java.awt.Container.validate(Container.java:881)
at java.awt.Window.dispatchEventImpl(Window.java:1566)
at java.awt.Component.dispatchEvent(Component.java:3368)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:448)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:193)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:147)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:141)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:133)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:101)
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.text.*;
import javax.swing.text.html.*;
public class Frame1 extends JFrame
{
JPanel contentPane;
BorderLayout borderLayout1 = new BorderLayout();
JScrollPane jScrollPane1 = new JScrollPane();
/**Construct the frame*/
public Frame1()
{
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try
{
jbInit();
}
catch(Exception e)
{
e.printStackTrace();
}
}
/**Component initialization*/
private void jbInit() throws Exception
{
contentPane = (JPanel) this.getContentPane();
this.setSize(new Dimension(600, 400));
/* Create the editor kit and document */
JTextPane jTextPane1 = new JTextPane();
jTextPane1.setContentType("text/html");
HTMLEditorKit editorKit =
(HTMLEditorKit)jTextPane1.getEditorKit();
/* Set up the text pane */
HTMLDocument doc = (HTMLDocument) jTextPane1.getStyledDocument();
final StyleSheet style = doc.getStyleSheet();
// Commenting out this line prevents the NullPointerException
style.addRule(
"td { color : #00FF00; font-family: Arial; font-size: 18pt; }");
HTMLDocument newdoc = new HTMLDocument(style);
newdoc.setParser(new
javax.swing.text.html.parser.ParserDelegator());
String line =
"<tr><td colspan=3></td></tr>"
+ "<tr><td colspan=3>Oct 23, 2001</td></tr>"
+ "<tr>"
+ "<td><nobr>4:21</nobr></td>"
+ "<td>SOMEUSER</td>"
+ "<tr><td><nobr>4:21</nobr></td><td>SOMEUSER</td><td>"
+ "some dummy words some dummy words some dummy words "
+ "</td></tr>";
editorKit.insertHTML(newdoc,
0,
line,
0,
0,
HTML.Tag.TABLE);
contentPane.add(jScrollPane1, BorderLayout.CENTER);
jTextPane1.setStyledDocument(newdoc);
jScrollPane1.getViewport().add(jTextPane1, null);
}
/**Overridden so we can exit when window is closed*/
protected void processWindowEvent(WindowEvent e)
{
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING)
{
System.exit(0);
}
}
public static void main(String[] args)
{
JFrame frame = new Frame1();
frame.show();
}
}
Error Message:
java.lang.NullPointerException
at javax.swing.text.FlowView.layout(FlowView.java:195)
at javax.swing.text.BoxView.setSize(BoxView.java:382)
at javax.swing.text.BoxView.updateChildSizes(BoxView.java:351)
at javax.swing.text.BoxView.setSpanOnAxis(BoxView.java:333)
at javax.swing.text.BoxView.layout(BoxView.java:685)
at javax.swing.text.BoxView.setSize(BoxView.java:382)
at javax.swing.text.BoxView.updateChildSizes(BoxView.java:346)
at javax.swing.text.BoxView.setSpanOnAxis(BoxView.java:319)
at javax.swing.text.BoxView.layout(BoxView.java:685)
at javax.swing.text.BoxView.setSize(BoxView.java:382)
at javax.swing.text.BoxView.updateChildSizes(BoxView.java:351)
at javax.swing.text.BoxView.setSpanOnAxis(BoxView.java:333)
at javax.swing.text.BoxView.layout(BoxView.java:685)
at javax.swing.text.BoxView.setSize(BoxView.java:382)
at javax.swing.text.BoxView.updateChildSizes(BoxView.java:346)
at javax.swing.text.BoxView.setSpanOnAxis(BoxView.java:319)
at javax.swing.text.BoxView.layout(BoxView.java:685)
at javax.swing.text.BoxView.setSize(BoxView.java:382)
at javax.swing.text.BoxView.updateChildSizes(BoxView.java:351)
at javax.swing.text.BoxView.setSpanOnAxis(BoxView.java:333)
at javax.swing.text.BoxView.layout(BoxView.java:685)
at javax.swing.text.FlowView.layout(FlowView.java:199)
at javax.swing.text.BoxView.setSize(BoxView.java:382)
at javax.swing.text.BoxView.updateChildSizes(BoxView.java:351)
at javax.swing.text.BoxView.setSpanOnAxis(BoxView.java:333)
at javax.swing.text.BoxView.layout(BoxView.java:685)
at javax.swing.text.BoxView.setSize(BoxView.java:382)
at javax.swing.text.BoxView.updateChildSizes(BoxView.java:351)
at javax.swing.text.BoxView.setSpanOnAxis(BoxView.java:333)
at javax.swing.text.BoxView.layout(BoxView.java:685)
at javax.swing.text.BoxView.setSize(BoxView.java:382)
at javax.swing.plaf.basic.BasicTextUI$RootView.setSize(BasicTextUI.java:1536)
at javax.swing.plaf.basic.BasicTextUI.getPreferredSize(BasicTextUI.java:733)
at javax.swing.JComponent.getPreferredSize(JComponent.java:1265)
at javax.swing.JEditorPane.getPreferredSize(JEditorPane.java:1204)
at javax.swing.ScrollPaneLayout.layoutContainer(ScrollPaneLayout.java:770)
at java.awt.Container.layout(Container.java:838)
at java.awt.Container.doLayout(Container.java:828)
at java.awt.Container.validateTree(Container.java:906)
at java.awt.Container.validateTree(Container.java:913)
at java.awt.Container.validateTree(Container.java:913)
at java.awt.Container.validateTree(Container.java:913)
at java.awt.Container.validateTree(Container.java:913)
at java.awt.Container.validate(Container.java:881)
at java.awt.Window.dispatchEventImpl(Window.java:1566)
at java.awt.Component.dispatchEvent(Component.java:3368)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:448)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:193)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:147)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:141)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:133)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:101)
- relates to
-
JDK-4522601 FlowView should not setParent(null) on views to be re-layed out.
-
- Closed
-