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

    [java] Aggiornare pannelli nel JTabbedPane

    salve

    ho questo problema:

    ho creato un JTabbedPane con due JPanel e in ogni JPanel c'è una JTable con dati provenienti da un db. Ora il problema è che quando clicco sulle linguetta dovrebbe aggiornare i pannelli ricaricando la tabella con i nuovi dati.

    ora io ho pensato di usare ChangeListener per lo spostamento nei pannelli. però non riesco ad aggiornare i jpanel . ho pravato anche con repaint e validate .

    come faccio?

    codice:
    public void stateChanged(ChangeEvent e) {
    		System.out.println(uno.getSelectedIndex());
    		
    		if(uno.getSelectedIndex()==1){
    			
    		}
    		if(uno.getSelectedIndex()==0){
    			
    		}
    	}

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [java] Aggiornare pannelli nel JTabbedPane

    Originariamente inviato da fcorsa
    ho creato un JTabbedPane con due JPanel e in ogni JPanel c'è una JTable con dati provenienti da un db. Ora il problema è che quando clicco sulle linguetta dovrebbe aggiornare i pannelli ricaricando la tabella con i nuovi dati.

    ora io ho pensato di usare ChangeListener per lo spostamento nei pannelli. però non riesco ad aggiornare i jpanel . ho pravato anche con repaint e validate .
    Se intendi proprio ricaricare la tabella nel senso di rileggere i dati dal db ... allora non è certo questione di un "repaint" o "validate".
    Ora, io non so nel tuo codice chi fa la lettura dal db, se la fa il table model (se ne hai fatto uno tuo specifico) o se la fa un'altra parte del tuo codice che va ad aggiornare per esempio un DefaultTableModel assegnato alla tabella.

    Quello che devi fare è aggiornare i dati nel table model. Fatto questo si aggiorna tutto a video automaticamente, non c'è bisogno di repaint o validate.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    utilizzo un mio tablemodel ! però la tabella è inserita in un altro pannelo che è inserito nel pannello che conpone tabbedpane. in questio caso se aggiorno il model risolvo?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da fcorsa
    in questio caso se aggiorno il model risolvo?
    Sì, è il model che devi aggiornare.

    Che poi vuoi che sia fatto quando l'utente clicca sulla linguetta ok ma è un altro conto. Nel senso che la rilettura dei dati e reimpostazione del table model la devi fare a seguito di un evento che per la selezione di una scheda è appunto ChangeListener.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    sbaglio qualcosa nel metodo perche non va?

    codice:
    public void reset() throws SQLException{
    			Statement stat = con.createStatement();
    //			stringa della query per la visualizzazione delle materiali
    			String query = "select * from magazzinoban order by id;";
    //			esegue la query con le caratteristiche della tabbellascrollabile
    			rs = stat.executeQuery(query);
    //			crea la tabella con il modello 
    			model= new ModelloTabella(rs);
    			table = new JTable(model);
    }

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da fcorsa
    sbaglio qualcosa nel metodo perche non va?

    codice:
    public void reset() throws SQLException{
    			Statement stat = con.createStatement();
    //			stringa della query per la visualizzazione delle materiali
    			String query = "select * from magazzinoban order by id;";
    //			esegue la query con le caratteristiche della tabbellascrollabile
    			rs = stat.executeQuery(query);
    //			crea la tabella con il modello 
    			model= new ModelloTabella(rs);
    			table = new JTable(model);
    }
    Ma non dovresti istanziare un nuovo JTable ogni volta. Se istanzi un nuovo JTable allora dovresti rimuovere il JTable vecchio dal pannello, inserire quello nuovo e allora in questo caso certo che sarebbe una questione di validate/repaint! Perché cambia la struttura del contenitore (il pannello).

    Ti basta o cambiare i dati nel modello o istanziare un nuovo modello e assegnarlo al JTable.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    ho messo: table.setModel(model); me ne sono accorto ora, ma non va lo stesso!

  8. #8
    ti spiego subito cosa non va :

    per sommi capi funziona, cioè abbiamo una tabella nel db con 2 righe e modifichiamo il contenuto di una delle due righe, va alla grande , ma se ggiungiamo una righa o se la cancelliamo, va in errore .
    sembra che la JTable avesse sempre il numero di righe fisso, settato alla sua creazione, in questo caso 2. spero di essere stato chiaro

  9. #9
    ho risolto rimuovendo il vecchio pannello contenente il JTable e rinserendo il nuovo.

    ciao grazie di tutto

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.