Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [JAVA] Refresh su Swing

    Ciao a tutti.

    Qualcuno sa indicarmi come poter aggiornare quello che vedo su un frame.

    Mi spiego meglio. Ho una JTable aggiunta al JPanel che fa da contentPane.

    Invoco il doLayout sul JFrame che include il tutto è vedo in prima fase la tabella vuota.

    A questo punto modifico il Model associato alla JTable (in funzione di determinati eventi), aggiungendo elementi e vorrei mostrare la nuova tabella.

    Ci sono riuscisto solo invocando di nuovo il doLayout dopo aver di nuovo associato il contentPane.

    C'è un modo più pulito???

    Grazie a tutti

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    quando modifichi il contenuto di un contenitore, ti conviene invocare il metodo validate sul contenitore stesso.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Il problema è più complesso credo.

    Cerco di spiegarlo per intero.

    Associo allla mia JTable una mia estensione del AbstractTableModel.
    Tale Model, che chiameremo LoadByTrheadTableModel possiede un Thread che ha la responsabilità di caricare una grande mole di dati da remoto. In questo modo l'evento non è bloccante per l'applicativo.

    Durante il ciclo infinito del Thread, durante il quale carico i dati un po per volta eseguo il seguente codice:
    codice:
    .
    .
    .
    mainFrame.setContentPane(contentPanel);
    mainFrame.doLayout();
    .
    .
    .
    che mi permette di aggiornare la visualizzazione. La tabella si riempie così un po' per volta è dà la sensazione all'utente che il sistema stia lavorando.

    Purtroppo, così facendo, mi risulta impossibile utilizzare altri elementi presenti sul contentPanel precedentemente inseriti (JTextField, JComboBox) perchè:
    [list=a][*]o il cursore scappa dalle JTextField e non posso scrivervi dentro[*]o il sistema lancia un ArrayOutOfBoundException quando espando una JComboBox[/list=a]

    Ho provato ad invocare solo il validate sul contentPanel e sulla jTable in luogo del codice presentato, ma non accade nulla.

    Che debbo fare????

    Spero di non essere stato troppo confusionario.

    Buona serata.

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.