-
Bug
-
Resolution: Not an Issue
-
P4
-
None
-
7
-
generic
-
generic
Under some circumstances font object can be null.
And it is legal to set null font on the Swing component.
However, attempt to further use this component may cause NPE.
Here is small testcase:
import javax.swing.JTextArea;
public class FTest {
public static void main(String[] a) {
JTextArea myArea=new JTextArea("",38, 55);
myArea.setFont(null);
myArea.setText(" Why NPE ");
}
}
Exception in thread "main" java.lang.NullPointerException
at javax.swing.text.Utilities.getTabbedTextWidth(Utilities.java:256)
at javax.swing.text.Utilities.getTabbedTextWidth(Utilities.java:191)
at javax.swing.text.PlainView.getLineWidth(PlainView.java:643)
at javax.swing.text.PlainView.updateDamage(PlainView.java:541)
at javax.swing.text.PlainView.insertUpdate(PlainView.java:425)
at javax.swing.plaf.basic.BasicTextUI$RootView.insertUpdate(BasicTextUI.java:1589)
at javax.swing.plaf.basic.BasicTextUI$UpdateHandler.insertUpdate(BasicTextUI.java:1848)
at javax.swing.text.AbstractDocument.fireInsertUpdate(AbstractDocument.java:185)
at javax.swing.text.AbstractDocument.handleInsertString(AbstractDocument.java:734)
at javax.swing.text.AbstractDocument.insertString(AbstractDocument.java:693)
at javax.swing.text.PlainDocument.insertString(PlainDocument.java:114)
at javax.swing.text.AbstractDocument.replace(AbstractDocument.java:655)
at javax.swing.text.JTextComponent.setText(JTextComponent.java:1693)
at FTest.main(FTest.java:9)
Java Result: 1
And it is legal to set null font on the Swing component.
However, attempt to further use this component may cause NPE.
Here is small testcase:
import javax.swing.JTextArea;
public class FTest {
public static void main(String[] a) {
JTextArea myArea=new JTextArea("",38, 55);
myArea.setFont(null);
myArea.setText(" Why NPE ");
}
}
Exception in thread "main" java.lang.NullPointerException
at javax.swing.text.Utilities.getTabbedTextWidth(Utilities.java:256)
at javax.swing.text.Utilities.getTabbedTextWidth(Utilities.java:191)
at javax.swing.text.PlainView.getLineWidth(PlainView.java:643)
at javax.swing.text.PlainView.updateDamage(PlainView.java:541)
at javax.swing.text.PlainView.insertUpdate(PlainView.java:425)
at javax.swing.plaf.basic.BasicTextUI$RootView.insertUpdate(BasicTextUI.java:1589)
at javax.swing.plaf.basic.BasicTextUI$UpdateHandler.insertUpdate(BasicTextUI.java:1848)
at javax.swing.text.AbstractDocument.fireInsertUpdate(AbstractDocument.java:185)
at javax.swing.text.AbstractDocument.handleInsertString(AbstractDocument.java:734)
at javax.swing.text.AbstractDocument.insertString(AbstractDocument.java:693)
at javax.swing.text.PlainDocument.insertString(PlainDocument.java:114)
at javax.swing.text.AbstractDocument.replace(AbstractDocument.java:655)
at javax.swing.text.JTextComponent.setText(JTextComponent.java:1693)
at FTest.main(FTest.java:9)
Java Result: 1