2009-07-22 5 views
0

Dies ist der Stack-Trace, der erzeugt wird:Was würde diese IllegalArgumentException während der Ereignisverteilung verursachen?

Exception occurred during event dispatching: 
java.lang.IllegalArgumentException: Cannot format given Object as a Number 
    at java.text.DecimalFormat.format(Unknown Source) 
    at java.text.Format.format(Unknown Source) 
    at javax.swing.JTable$DoubleRenderer.setValue(Unknown Source) 
    at javax.swing.table.DefaultTableCellRenderer.getTableCellRendererComponent(Unknown Source) 
    at javax.swing.JTable.prepareRenderer(Unknown Source) 
    at javax.swing.plaf.basic.BasicTableUI.paintCell(Unknown Source) 
    at javax.swing.plaf.basic.BasicTableUI.paintCells(Unknown Source) 
    at javax.swing.plaf.basic.BasicTableUI.paint(Unknown Source) 
    at javax.swing.plaf.ComponentUI.update(Unknown Source) 
    at javax.swing.JComponent.paintComponent(Unknown Source) 
    at javax.swing.JComponent.paint(Unknown Source) 
    at javax.swing.JComponent.paintChildren(Unknown Source) 
    at javax.swing.JComponent.paint(Unknown Source) 
    at javax.swing.JViewport.paint(Unknown Source) 
    at javax.swing.JComponent.paintChildren(Unknown Source) 
    at javax.swing.JComponent.paint(Unknown Source) 
    at javax.swing.JComponent.paintToOffscreen(Unknown Source) 
    at javax.swing.BufferStrategyPaintManager.paint(Unknown Source) 
    at javax.swing.RepaintManager.paint(Unknown Source) 
    at javax.swing.JComponent._paintImmediately(Unknown Source) 
    at javax.swing.JComponent.paintImmediately(Unknown Source) 
    at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source) 
    at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source) 
    at javax.swing.RepaintManager.seqPaintDirtyRegions(Unknown Source) 
    at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(Unknown Source) 
    at java.awt.event.InvocationEvent.dispatch(Unknown Source) 
    at java.awt.EventQueue.dispatchEvent(Unknown Source) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) 
    at java.awt.Dialog$1.run(Unknown Source) 
    at java.awt.Dialog$3.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.awt.Dialog.show(Unknown Source) 
    at java.awt.Component.show(Unknown Source) 
    at java.awt.Component.setVisible(Unknown Source) 
    at java.awt.Window.setVisible(Unknown Source) 
    at java.awt.Dialog.setVisible(Unknown Source) 
    //a call to setVisible(true) 
    //some function calls that initialize the dialog box 
    //However, the problem occurs AFTER the dialog box is open, when check 
    //boxes are clicked on/off in certain orders. Unfortunately, I can't 
    //share any of this code. 
    //Currently, I'm examining the event that's fired. But other ideas are 
    //welcome. 
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) 
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) 
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) 
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source) 
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) 
    at java.awt.Component.processMouseEvent(Unknown Source) 
    at javax.swing.JComponent.processMouseEvent(Unknown Source) 
    at java.awt.Component.processEvent(Unknown Source) 
    at java.awt.Container.processEvent(Unknown Source) 
    at java.awt.Component.dispatchEventImpl(Unknown Source) 
    at java.awt.Container.dispatchEventImpl(Unknown Source) 
    at java.awt.Component.dispatchEvent(Unknown Source) 
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) 
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) 
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) 
    at java.awt.Container.dispatchEventImpl(Unknown Source) 
    at java.awt.Window.dispatchEventImpl(Unknown Source) 
    at java.awt.Component.dispatchEvent(Unknown Source) 
    at java.awt.EventQueue.dispatchEvent(Unknown Source) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
    at java.awt.EventDispatchThread.run(Unknown Source) 

Das Seltsame ist, dass die Reihenfolge ich überprüfen und die JCheckBox-es Angelegenheiten deaktivieren. Ich versuche zu sehen, ob es ein Muster gibt, aber ich habe noch nicht genug Daten. Ich versuche nur ein paar Ideen zu bekommen, wo ich nach möglichen Problemen suchen kann.

EDIT 1: Ich habe gerade die vier Methoden in den bearbeiteten Zeilen des Stack-Trace überprüft. Sie werden nur aufgerufen, wenn das Fenster geöffnet wird, um die Felder mit den erforderlichen Daten zu füllen. Sobald der Dialog geöffnet ist, werden sie nie aufgerufen, also sind sie nicht das Problem.

EDIT 2: Nach dreifacher Überprüfung des Zustands jeder Variable in den herausgearbeiteten Funktionsaufrufen habe ich sie als Täter ziemlich eliminiert.

Antwort

0

Sie haben anscheinend eine JTable mit einem DoubleRenderer für eine Ihrer Spalten, und die Daten, die Sie erhalten, enthalten ungültige Werte für diese Dezimalspalte. Wahrscheinlich nur einige alphanumerische Zeichen anstelle von Zahlen.

+0

Ich tue wirklich. Aber wie kann ich herausfinden, welcher Wert das Problem verursacht? Nichts in meinem Code, der die JTable verwendet, wird durch den Stack-Trace hervorgehoben. –

+0

Damit meine ich, dass, wenn ich die Kontrollkästchen ein- und ausgeblendet habe, Zeilen zur JTable hinzugefügt werden. Alle hinzugefügten Zeilen verwenden jedoch ihre Standardwerte. Was ich also herausfinden will, wenn ich richtig liege, ist, wie ich feststellen kann, welcher Standardwert die Ausnahme verursacht und wie ich sie behebe? –

+0

Das stimmt. Sie müssen das Tabellenmodell überprüfen, an das Sie Ihre JTable gebunden haben, und in den Spalten suchen, wo Sie numerische Daten erwarten würden. – MicSim

Verwandte Themen