Visualizzazione dei risultati da 1 a 10 su 12

Visualizzazione discussione

  1. #1

    JTable: Ridefinizione comportamento button

    Buongiorno a tutti,


    Ho una JTable nella quale sono registrati degli eventi (presi opportunamente da un DB).
    Alla fine, come ultima colonna, ho un mio bottone che se cliccato ha il compito di scaricare un documento da internet, scandirlo e caricare dei risultati nel DB, in un tempo apprezzabile (max 10-15 secondi, ma più la rete è lenta più cresce il tempo dell'operazione).


    Fino a qualche tempo non avevo problemi in quanto era tutto nel thread principale dell'EDT
    quindi al click del bottone stava tutto bloccato per il tempo necessario.
    Adesso ho implementato uno SwingWorker con un JProgressBar che mi permette di tenere libero l'EDT, e quindi di far girare il mio Progressbar, e far vedere che l'applicazione è viva è che sta girando correttamente.


    Visto che i tasti non devono essere cliccati in maniera contemporanea come faccio a dire di bloccare la colonna dei tasti?


    Ho la mia classe TableModelFrame che estende DefaultTableModel e li si trova il mio metodo isCellEditable(int row, int column) dove viene data istruzione di quali colonne devono essere editabili e quali no.

    Al momento in cui vengono fatte queste operazioni richieste sono su un'altra classe (ButtonEditor) che descrive il comportamento del bottone.


    Come faccio a richiamare il metodo isCellEditable sul mio TableModelFrame e ridefinire il comportamento, dato che al momento della conclusione delle operazioni deve ritornare al comportamento precedente?


    Grazie.
    Ciao.

    Allego la mia SwingWorkerClass dove dovrò editare il comportamento della colonna dei bottoni
    codice:
    class SwingWorkerClass extends SwingWorker<Void, Void> {   
        private ProgressPanel progressBar;
        private Risultato r;
        private ButtonEditor ed;
        private TableFrame aframe;
    
    
        public SwingWorkerClass(ProgressPanel aProgressBar, ButtonEditor ed, Risultato ris, TableFrame frame) {        
            this.progressBar = aProgressBar;
            r=ris;
            this.ed=ed;
            aframe=frame;
            //editare comportamento colonna tasti tabella ?!?!?
            progressBar.setVisible(true);
        
        }
    
    
        @Override
        public Void doInBackground() {
            //long running task
            ed.modifyResult(r);
            return null;
        }    
    
    
        @Override
        public void done() {                
             //ridefinire vecchio comportamento colonna tasti tabella ?!?!?
            progressBar.setVisible(false);      
        }
    }
    Ultima modifica di schumy2000; 24-02-2016 a 18:13
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

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 © 2025 vBulletin Solutions, Inc. All rights reserved.