JDK-4673343 : Entering invalid HTML in JTable causes showstopper exception.
  • Type: Bug
  • Component: client-libs
  • Sub-Component: javax.swing
  • Affected Version: 1.4.0
  • Priority: P4
  • Status: Closed
  • Resolution: Duplicate
  • OS: windows_2000
  • CPU: x86
  • Submitted: 2002-04-23
  • Updated: 2002-05-11
  • Resolved: 2002-05-11
Related Reports
Duplicate :  
Description

Name: gm110360			Date: 04/23/2002


FULL PRODUCT VERSION :
java version "1.3.1"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1-b24)
Java HotSpot(TM) Client VM (build 1.3.1-b24, mixed mode)

FULL OPERATING SYSTEM VERSION :

Microsoft Windows 2000 [Version 5.00.2195]


A DESCRIPTION OF THE PROBLEM :
Create a 2x2 JTable.
Enter <html><frame> into one of the cells and hit enter.
A long exception message is produced.

STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
1. Double-click on one cell.
2. Enter <html><frame>.
3. Hit return.

EXPECTED VERSUS ACTUAL BEHAVIOR :
Nothing should occur.  The cell should accept the text with
no errors.

See below for the exception that occurs.

Note that the user can still click on other cells, but
further activity within the JTable continues to produce
exceptions.

ERROR MESSAGES/STACK TRACES THAT OCCUR :
Exception occurred during event dispatching:
java.lang.Error: Can't build aframeset, BranchElement(frameset) 1,2
:no ROWS or COLS defined.
        at javax.swing.text.html.HTMLEditorKit$HTMLFactory.create
(HTMLEditorKit.java:1021)
        at javax.swing.text.CompositeView.loadChildren(CompositeView.java:98)
        at javax.swing.text.CompositeView.setParent(CompositeView.java:125)
        at javax.swing.text.html.BlockView.setParent(BlockView.java:58)
        at javax.swing.text.CompositeView.replace(CompositeView.java:197)
        at javax.swing.text.BoxView.replace(BoxView.java:121)
        at javax.swing.text.CompositeView.loadChildren(CompositeView.java:100)
        at javax.swing.text.CompositeView.setParent(CompositeView.java:125)
        at javax.swing.text.html.BlockView.setParent(BlockView.java:58)
        at javax.swing.plaf.basic.BasicHTML$Renderer.<init>(BasicHTML.java:231)
        at javax.swing.plaf.basic.BasicHTML.createHTMLView(BasicHTML.java:50)
        at javax.swing.plaf.basic.BasicHTML.updateRenderer(BasicHTML.java:83)
        at javax.swing.plaf.basic.BasicLabelUI.propertyChange
(BasicLabelUI.java:381)
        at javax.swing.event.SwingPropertyChangeSupport.firePropertyChange
(SwingPropertyChangeSupport.java:161)
        at javax.swing.event.SwingPropertyChangeSupport.firePropertyChange
(SwingPropertyChangeSupport.java:130)
        at javax.swing.JComponent.firePropertyChange(JComponent.java:3208)
        at javax.swing.table.DefaultTableCellRenderer.firePropertyChange
(DefaultTableCellRenderer.java:217)
        at javax.swing.JLabel.setText(JLabel.java:302)
        at javax.swing.table.DefaultTableCellRenderer.setValue
(DefaultTableCellRenderer.java:238)
        at
javax.swing.table.DefaultTableCellRenderer.getTableCellRendererComponent
(DefaultTableCellRenderer.java:161)
        at javax.swing.JTable.prepareRenderer(JTable.java:3540)
        at javax.swing.plaf.basic.BasicTableUI.paintCell(BasicTableUI.java:995)
        at javax.swing.plaf.basic.BasicTableUI.paintCells(BasicTableUI.java:917)
        at javax.swing.plaf.basic.BasicTableUI.paint(BasicTableUI.java:858)
        at javax.swing.plaf.ComponentUI.update(ComponentUI.java:39)
        at javax.swing.JComponent.paintComponent(JComponent.java:395)
        at javax.swing.JComponent.paint(JComponent.java:687)
        at javax.swing.JComponent.paintWithBuffer(JComponent.java:3878)
        at javax.swing.JComponent._paintImmediately(JComponent.java:3821)
        at javax.swing.JComponent.paintImmediately(JComponent.java:3672)
        at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:370)
        at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run
(SystemEventQueueUtilities.java:124)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:154)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:337)
        at java.awt.EventDispatchThread.pumpOneEventForHierarchy
(EventDispatchThread.java:131)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy
(EventDispatchThread.java:98)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:85)

This bug can be reproduced always.

---------- BEGIN SOURCE ----------
import javax.swing.*;

public class JTableTest {
    public static void main (String args[]) {
      JFrame frame = new JFrame("Test of invalid HTML in JTable");
      frame.getContentPane().add(new JTable(2, 2));
      frame.pack();
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.show();
    }

}

---------- END SOURCE ----------
(Review ID: 139520) 
======================================================================