-
Bug
-
Resolution: Fixed
-
P3
-
1.3.0
-
beta
-
x86
-
windows_nt
Name: mt13159 Date: 02/16/2001
Trying to change the look and feel to CDE/Motif will throw a NPE from sun.awt.font.FontDesignMetrics.stringWidth when a JInternalFrame has a null title.
Steps:
1. set JInternalFrame title to null
2. change look and feel to MotifLookAndFeel.
Code:
package package3;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Frame1 extends JFrame {
JInternalFrame jInternal = new JInternalFrame();
JButton jButton = new JButton();
public static void main(String[] args) {
Frame f = new Frame1();
f.setVisible(true);
}
public Frame1() {
super();
try {
jbInit();
}
catch (Exception e) {
e.printStackTrace();
}
}
private void jbInit() throws Exception {
jInternal.setVisible(true);
jInternal.setTitle(null);
jButton.setText("CDE/Motif");
jButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
UIManager.setLookAndFeel(com.sun.java.swing.plaf.motif.MotifLookAndFeel.class.getName());
SwingUtilities.updateComponentTreeUI(Frame1.this);
} catch (Exception ex) {
ex.printStackTrace();
}
}
});
this.getContentPane().add(jInternal, BorderLayout.CENTER);
this.getContentPane().add(jButton, BorderLayout.WEST);
pack();
}
}
Stack Trace:
Exception occurred during event dispatching:
java.lang.NullPointerException
int sun.awt.font.FontDesignMetrics.stringWidth(java.lang.String)
FontDesignMetrics.java:253
void com.sun.java.swing.plaf.motif.MotifGraphicsUtils.drawStringInRect(java.awt.Graphics, java.lang.String, int, int, int, int, int)
MotifGraphicsUtils.java:94
void com.sun.java.swing.plaf.motif.MotifInternalFrameTitlePane$Title.paint(java.awt.Graphics)
MotifInternalFrameTitlePane.java:380
void javax.swing.JComponent.paintChildren(java.awt.Graphics)
JComponent.java:523
void javax.swing.JComponent.paint(java.awt.Graphics)
JComponent.java:748
void javax.swing.JComponent.paintChildren(java.awt.Graphics)
JComponent.java:523
void javax.swing.JComponent.paint(java.awt.Graphics)
JComponent.java:748
void javax.swing.JComponent.paintChildren(java.awt.Graphics)
JComponent.java:523
void javax.swing.JComponent.paint(java.awt.Graphics)
JComponent.java:748
void javax.swing.JComponent.paintChildren(java.awt.Graphics)
JComponent.java:523
void javax.swing.JComponent.paint(java.awt.Graphics)
JComponent.java:748
void javax.swing.JLayeredPane.paint(java.awt.Graphics)
JLayeredPane.java:546
void javax.swing.JComponent.paintChildren(java.awt.Graphics)
JComponent.java:523
void javax.swing.JComponent.paint(java.awt.Graphics)
JComponent.java:719
void java.awt.GraphicsCallback$PaintCallback.run(java.awt.Component, java.awt.Graphics)
GraphicsCallback.java:23
void sun.awt.SunGraphicsCallback.runOneComponent(java.awt.Component, java.awt.Rectangle, java.awt.Graphics, java.awt.Shape, int)
SunGraphicsCallback.java:54
void sun.awt.SunGraphicsCallback.runComponents(java.awt.Component[], java.awt.Graphics, int)
SunGraphicsCallback.java:91
void java.awt.Container.paint(java.awt.Graphics)
Container.java:960
void javax.swing.JFrame.update(java.awt.Graphics)
JFrame.java:333
void sun.awt.RepaintArea.update(java.lang.Object)
RepaintArea.java:337
void sun.awt.windows.WComponentPeer.handleEvent(java.awt.AWTEvent)
WComponentPeer.java:197
void java.awt.Component.dispatchEventImpl(java.awt.AWTEvent)
Component.java:2665
void java.awt.Container.dispatchEventImpl(java.awt.AWTEvent)
Container.java:1213
void java.awt.Window.dispatchEventImpl(java.awt.AWTEvent)
Window.java:912
void java.awt.Component.dispatchEvent(java.awt.AWTEvent)
Component.java:2499
void java.awt.EventQueue.dispatchEvent(java.awt.AWTEvent)
EventQueue.java:319
boolean java.awt.EventDispatchThread.pumpOneEvent()
EventDispatchThread.java:103
void java.awt.EventDispatchThread.pumpEvents(java.awt.Conditional)
EventDispatchThread.java:93
void java.awt.EventDispatchThread.run()
EventDispatchThread.java:84
Exception occurred during event dispatching:
java.lang.NullPointerException
int sun.awt.font.FontDesignMetrics.stringWidth(java.lang.String)
FontDesignMetrics.java:253
void com.sun.java.swing.plaf.motif.MotifGraphicsUtils.drawStringInRect(java.awt.Graphics, java.lang.String, int, int, int, int, int)
MotifGraphicsUtils.java:94
void com.sun.java.swing.plaf.motif.MotifInternalFrameTitlePane$Title.paint(java.awt.Graphics)
MotifInternalFrameTitlePane.java:380
void javax.swing.JComponent.paintChildren(java.awt.Graphics)
JComponent.java:523
void javax.swing.JComponent.paint(java.awt.Graphics)
JComponent.java:748
void javax.swing.JComponent.paintChildren(java.awt.Graphics)
JComponent.java:523
void javax.swing.JComponent.paint(java.awt.Graphics)
JComponent.java:748
void javax.swing.JComponent.paintChildren(java.awt.Graphics)
JComponent.java:523
void javax.swing.JComponent.paint(java.awt.Graphics)
JComponent.java:748
void javax.swing.JComponent.paintChildren(java.awt.Graphics)
JComponent.java:523
void javax.swing.JComponent.paint(java.awt.Graphics)
JComponent.java:748
void javax.swing.JLayeredPane.paint(java.awt.Graphics)
JLayeredPane.java:546
void javax.swing.JComponent.paintChildren(java.awt.Graphics)
JComponent.java:523
void javax.swing.JComponent.paint(java.awt.Graphics)
JComponent.java:719
void java.awt.GraphicsCallback$PaintCallback.run(java.awt.Component, java.awt.Graphics)
GraphicsCallback.java:23
void sun.awt.SunGraphicsCallback.runOneComponent(java.awt.Component, java.awt.Rectangle, java.awt.Graphics, java.awt.Shape, int)
SunGraphicsCallback.java:54
void sun.awt.SunGraphicsCallback.runComponents(java.awt.Component[], java.awt.Graphics, int)
SunGraphicsCallback.java:91
void java.awt.Container.paint(java.awt.Graphics)
Container.java:960
void javax.swing.JFrame.update(java.awt.Graphics)
JFrame.java:333
void sun.awt.RepaintArea.update(java.lang.Object)
RepaintArea.java:337
void sun.awt.windows.WComponentPeer.handleEvent(java.awt.AWTEvent)
WComponentPeer.java:197
void java.awt.Component.dispatchEventImpl(java.awt.AWTEvent)
Component.java:2665
void java.awt.Container.dispatchEventImpl(java.awt.AWTEvent)
Container.java:1213
void java.awt.Window.dispatchEventImpl(java.awt.AWTEvent)
Window.java:912
void java.awt.Component.dispatchEvent(java.awt.AWTEvent)
Component.java:2499
void java.awt.EventQueue.dispatchEvent(java.awt.AWTEvent)
EventQueue.java:319
boolean java.awt.EventDispatchThread.pumpOneEvent()
EventDispatchThread.java:103
void java.awt.EventDispatchThread.pumpEvents(java.awt.Conditional)
EventDispatchThread.java:93
void java.awt.EventDispatchThread.run()
EventDispatchThread.java:84
(Review ID: 117090)
======================================================================