pgdx Skrevet 12. desember 2007 Del Skrevet 12. desember 2007 (endret) Jeg jobber med noen GUI-klasser som inneholder ganske mye kode, og tilsynelatende tilfeldig oppstår dette problemet, kanskje 1 av 100 ganger jeg starter programmet. Noen som har opplevd dette før? Spesielt rart synes jeg at Collections.sort er inni bildet. Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException at javax.swing.LayoutComparator.compare(LayoutComparator.java:72) at java.util.Arrays.mergeSort(Arrays.java:1284) at java.util.Arrays.mergeSort(Arrays.java:1296) at java.util.Arrays.mergeSort(Arrays.java:1295) at java.util.Arrays.sort(Arrays.java:1223) at java.util.Collections.sort(Collections.java:159) at javax.swing.SortingFocusTraversalPolicy.enumerateAndSortCycle(SortingFocusTraversalPolicy. ava:119) at javax.swing.SortingFocusTraversalPolicy.getFirstComponent(SortingFocusTraversalPolicy.java 434) at javax.swing.LayoutFocusTraversalPolicy.getFirstComponent(LayoutFocusTraversalPolicy.java:1 8) at javax.swing.SortingFocusTraversalPolicy.getDefaultComponent(SortingFocusTraversalPolicy.ja a:511) at java.awt.FocusTraversalPolicy.getInitialComponent(FocusTraversalPolicy.java:149) at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:318) at java.awt.Component.dispatchEventImpl(Component.java:3857) at java.awt.Container.dispatchEventImpl(Container.java:2024) at java.awt.Window.dispatchEventImpl(Window.java:1791) at java.awt.Component.dispatchEvent(Component.java:3819) at java.awt.EventQueue.dispatchEvent(EventQueue.java:463) at java.awt.SequencedEvent.dispatch(SequencedEvent.java:93) at java.awt.EventQueue.dispatchEvent(EventQueue.java:461) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149) at java.awt.EventDispatchThread.run(EventDispatchThread.java:110) Endret 12. desember 2007 av pgdx Lenke til kommentar
blackbrrd Skrevet 15. desember 2007 Del Skrevet 15. desember 2007 Du bruker ikke tilfeldigvis tablesorter koden som du finner på sun sine hjemmesider? Lenke til kommentar
pgdx Skrevet 15. desember 2007 Forfatter Del Skrevet 15. desember 2007 Du bruker ikke tilfeldigvis tablesorter koden som du finner på sun sine hjemmesider?No, sir! Lenke til kommentar
Patton Skrevet 18. desember 2007 Del Skrevet 18. desember 2007 Som du sikkert har sett, saa blir det hele startet av en FocusManager (DefaultKeyboardFocusManager). Naa har jeg dessverre ikke saa mye peiling paa focus-policies, men det er i dette tilfelle kanskje ikke noedvendig. Methoden som kaster ClassCastException er javax.swing.LayoutComparator.compare(Object,Object). En kjapp tur innom klassen: public int compare(Object o1, Object o2) { Component a = (Component)o1; Component b = (Component)o2; if (a == b) { return 0; } // Row/Column algorithm only applies to siblings. If 'a' and 'b' // aren't siblings, then we need to find their most inferior // ancestors which share a parent. Compute the ancestory lists for // each Component and then search from the Window down until the // hierarchy branches. if (a.getParent() != b.getParent()) { LinkedList aAncestory, bAncestory; for(aAncestory = new LinkedList(); a != null; a = a.getParent()) { aAncestory.add(a); if (a instanceof Window) { break; } } if (a == null) { // 'a' is not part of a Window hierarchy. Can't cope. throw new ClassCastException(); // <------------ HER begynner StackTrace'n } Som du kan se, saa kastes ClassCastException hvis ikke methode parameter 1 (java.awt.Component) har en Window som ancestor (foroevrig en horribel exception aa kaste der, uten message eller noe ). Sannsynligvis er en eller annen Component ikke forankret i en JFrame eller JDialog (eller en Subklasse av Window), paa et gitt tidspunkt. Collections blir forresten brukt her som en utility-class for javax.swing.SortingFocusTraversalPolicy Har du en eller annen dialog uten parent? (f.eks. JOptionPane.showConfirmDialog(null,"Confirm this!") Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå