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

NPE from FontDesignMetrics.stringWidth for null string

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P3 P3
    • 1.4.0
    • 1.3.0
    • client-libs
    • 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)
      ======================================================================

            joutwatesunw Joshua Outwater (Inactive)
            mthakore Mayank Thakore (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: