Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    33

    [JAVA] Exception: Stack Trace

    Ciao a tutti.
    Sarei davvero grato a chiunque mi possa suggerire una causa del comportamento che vi illustro ora..ha davvero del paranormale.

    L'eccezione che viene lanciata dal programma è questa:

    java.lang.Exception: Stack trace
    at java.lang.Thread.dumpStack(Thread.java:1064)
    at javax.swing.SwingGraphics.createSwingGraphics(Swin gGraphics.java:147)
    at javax.swing.JComponent._paintImmediately(JComponen t.java:4677)
    at javax.swing.JComponent.paintImmediately(JComponent .java:4495)
    at javax.swing.RepaintManager.paintDirtyRegions(Repai ntManager.java:410)
    at javax.swing.SystemEventQueueUtilities$ComponentWor kRequest.run(SystemEventQueueUtilities.java:117)
    at java.awt.event.InvocationEvent.dispatch(Invocation Event.java:178)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java: 454)
    at java.awt.EventDispatchThread.pumpOneEventForHierar chy(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForHierarch y(EventDispatchThread.java:151)
    at java.awt.EventDispatchThread.pumpEvents(EventDispa tchThread.java:145)
    at java.awt.EventDispatchThread.pumpEvents(EventDispa tchThread.java:137)
    at java.awt.EventDispatchThread.run(EventDispatchThre ad.java:100)
    java.lang.NullPointerException
    at javax.swing.JComponent._paintImmediately(JComponen t.java:4678)
    at javax.swing.JComponent.paintImmediately(JComponent .java:4495)
    at javax.swing.RepaintManager.paintDirtyRegions(Repai ntManager.java:410)
    at javax.swing.SystemEventQueueUtilities$ComponentWor kRequest.run(SystemEventQueueUtilities.java:117)
    at java.awt.event.InvocationEvent.dispatch(Invocation Event.java:178)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java: 454)
    at java.awt.EventDispatchThread.pumpOneEventForHierar chy(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForHierarch y(EventDispatchThread.java:151)
    at java.awt.EventDispatchThread.pumpEvents(EventDispa tchThread.java:145)
    at java.awt.EventDispatchThread.pumpEvents(EventDispa tchThread.java:137)
    at java.awt.EventDispatchThread.run(EventDispatchThre ad.java:100)
    In paintImmediately null graphics

    In pratica sono riuscito a vedere che si ha ogni tanto (non sempre!) quando chiamo un metodo che setta il DefaultTableModel ad una tabella. Ecco il metodo:

    codice:
    private void settaModello(Vector contenuto, Vector header){
    
    DefaultTableModel model = new DefaultTableModel(contenuto, header) {
    
    public boolean isCellEditable (int row, int col) {
    return false;
    }
    };
    //elencoArchivi è il nome della tabella da settare
    elencoArchivi.setModel(model);
    elencoArchivi.setRowHeight(18);
    elencoArchivi.setRowSelectionAllowed(true);
    
    }
    Spero ci sia qualcosa di sbagliato in questo metodo...
    Vi prego aiutatemi!!!
    Grazie a tutti in anticipo

  2. #2
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    se lo imposti in un thread direi che è normale

  3. #3
    Utente di HTML.it L'avatar di cso
    Registrato dal
    Aug 2004
    Messaggi
    2,050
    se non vuoi che ti vengano fuori tutte quelle scritte metti il blocco di codice nel TRY e CATCH.

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    33

    Ok...

    In pratica io chiamo tramite un thread la creazione del JInternalFrame in cui è inserito quel metodo, dici che è quello ad essere sbagliato? A cosa è dovuto?
    Come posso evitare quella stack trace?
    Grazie mille, è un pò che ci perdo la testa su questa cosa...

  5. #5
    Utilizzi invokeLater?
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  6. #6
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    i componenti swing vanno utilizzati in un unico thread
    questo lo lessi non ricordo dove ma sembra affidabile
    cerca di fare con metodi diversi senza uso di thread

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    33

    No..

    Non utilizzo InvokeLater...chiamo il thread ogni volta che devo riaprire il componente Swing.

    Secondo voi è utile utilizzare ogni volta che devo aprire un nuovo JInternalFrame un thread o questa è una pratica non necessaria in un programma multithreaded?

    Grazie mille, mi siete stati di grande aiuto

  8. #8
    Usalo. L'argomento di invokeLater e' il thread stesso (o meglio qualsiasi oggetto implementi l'interfaccia Runnable)
    In pratica il run() viene eseguito nel contesto del "dispatch event thread", che e' l'unico thread designato a "toccare" i componenti Swing.
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    33
    Potresti gentilmente postarmi un piccolo esempio di come viene utilizzato questo metodo?

    Ti ringrazio

  10. #10
    Questo e' il tipico esempio che si trova nei testi. La creazione della GUI. Quando parte l'applicazione non ti trovi all'interno del dispatch event thread. Quindi teoricamente non dovresti neanche mettere mano ai componenti Swing. In effetti non e' mai morto nessuno inizializzando la GUI cosi'.
    Pero' se vuoi fare le cose per bene, ti crei un metodo apposito, crei un Runnable anonimo che lo richiama, e lo passi a invokeLater. Cosi':

    codice:
        public static void createAndShowGUI() {
            LottoFrame lotto = new LottoFrame();
            lotto.setDefaultCloseOperation(LottoFrame.DO_NOTHING_ON_CLOSE);
            lotto.pack();
            lotto.setVisible(true);
        }
        
        public static void main(String[] args) {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    createAndShowGUI();
                }
            });
        }
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.