2009-07-22 7 views
0

C'est la trace de la pile qui est générée:Qu'est-ce qui provoquerait cette exception IllegalArgumentException lors de l'envoi d'un événement?

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) 

La chose étrange est que l'ordre que je cocher et décocher les questions JCheckBox-es. J'essaie de voir s'il y a un modèle, mais je n'ai pas encore assez de données. J'essaie juste d'avoir des idées sur où aller chercher des problèmes potentiels.

EDIT 1: Je viens de vérifier les quatre méthodes appelées dans les lignes éditées de la trace de la pile. Ils ne sont appelés que lorsque la fenêtre s'ouvre pour remplir initialement les champs avec les données requises. Une fois le dialogue ouvert, ils ne sont jamais appelés, ils ne sont donc pas le problème.

EDIT 2: Après avoir triplé l'état de chaque variable dans les appels de fonction édités, je les ai pratiquement éliminés comme coupables.

Répondre

0

Il semble que vous ayez un JTable avec un DoubleRenderer pour l'une de vos colonnes et que les données que vous obtenez contiennent des valeurs non valides pour cette colonne décimale. Probablement quelques caractères alphanumériques au lieu de chiffres seulement.

+0

Je le fais en effet. Mais comment puis-je savoir quelle est la valeur qui cause le problème? Rien dans mon code qui utilise le JTable n'est mis en évidence par la trace de la pile. –

+0

Par cela, je veux dire que lorsque je coche et décoche les cases à cocher, les lignes sont ajoutées à la JTable. Cependant, toutes les lignes ajoutées utilisent leurs valeurs par défaut. Donc, ce que j'essaie de comprendre, si vous avez raison, est comment puis-je déterminer quelle valeur par défaut provoque l'exception et comment puis-je la réparer? –

+0

C'est vrai. Vous devez vérifier le modèle de table auquel vous avez lié votre JTable et regarder dans les colonnes, où vous attendez des données numériques. – MicSim

Questions connexes