Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    378

    [ Cancellare RIGA in JTABLE ]

    ciao a tutti, ho scritto questo codice che mi visualizza una tabella. Colonna 1 con un immagine, Colonna 2 e Colonna 3 con testo. Il problema è che non riesco a cancellare le righe.... riesco solo a farmi dire quante righe sono presenti...

    Questo è il codice:

    Codice PHP:

    // dati tabella    
            
    Object[][] data = new Object[][] { 
                {new 
    ImageIcon(getClass().getResource("cam09R.jpg")), "Ora 01""Data 01"}, 
                  {new 
    ImageIcon(getClass().getResource("cam09R.jpg")), "Ora 02""Data 02"}, 
                  {new 
    ImageIcon(getClass().getResource("cam09R.jpg")), "Ora 03""Data 03"
                };
                
            
    // nomi colonne
            
    Object[] columnNames = new Object[] {"""Ora""Data"};
            
            
    // istanzio la tabella
            
    table = new javax.swing.JTable(datacolumnNames);
            
    table.setRowHeight(124);
            
    table.getColumn("").setMinWidth(124);
                        
            
    // impostazioni colonna IMMAGINE
            
    table.getColumn("").setCellRenderer(
                new 
    DefaultTableCellRenderer() {
                    public 
    Component getTableCellRendererComponent(JTable tableObject valueboolean isSelectedboolean hasFocusint rowint column) {
                        
    // Label der Oberklasse erweitern
                        
    JLabel label = (JLabelsuper.getTableCellRendererComponent(tablevalueisSelectedhasFocusrowcolumn);
                        
    // Lediglich Text und Grafik anpassen
                        
    if (value != null) {
                            
    label.setText("");
                            
    label.setIcon((ImageIconvalue);
                              }
                        return 
    label;
                          }
                    }
                );
            
            
    // impostazioni colonna ORA
            
    table.getColumn("Ora").setCellRenderer(
                new 
    DefaultTableCellRenderer() {
                    public 
    Component getTableCellRendererComponent(JTable tableObject valueboolean isSelectedboolean hasFocusint rowint column) {
                        
    // Label der Oberklasse erweitern
                        
    JLabel label = (JLabelsuper.getTableCellRendererComponent(tablevalueisSelectedhasFocusrowcolumn);
                        
    label.setHorizontalAlignment(SwingConstants.CENTER);
                        return 
    label;
                        }
                      }
                  );
            
            
    // impostazioni colonna DATA
            
    table.getColumn("Data").setCellRenderer(
                    new 
    DefaultTableCellRenderer() {
                        public 
    Component getTableCellRendererComponent(JTable tableObject valueboolean isSelectedboolean hasFocusint rowint column) {
                            
    // Label der Oberklasse erweitern
                            
    JLabel label = (JLabelsuper.getTableCellRendererComponent(tablevalueisSelectedhasFocusrowcolumn);
                            
    label.setHorizontalAlignment(SwingConstants.CENTER);
                            return 
    label;
                            }
                          }
                      );
                            
            
    JScrollPane pane = new JScrollPane(table);
            
    topPanel.add(pane); 

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    71
    Al momento non ho sottomano li codice da mandarti, appena lo trovo comunque lo posto; questo metoto lo uso sia per aggiungere che per togliere righe ad una tabella
    L'idea è che tu crei il tuo nuovo array Object[][] he sarà la tua nuova tabella, poi imposti recuperi il modello (getModel()) e imposti il tuo nuovo array per sostituire quello vecchio.
    A questo punto devi lanciare il metodo fireTableRowsInserted o fireTableRowsDeleted.
    Spero di essere stato chiaro, appena trovo il codice lo metto.

    Ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    378
    ok ti ringrazio, aspetto il codice allora !!! grazie ancora!!

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    71
    Ecco due metodi, uno per inserire uno per eliminare una sola righa, se devi eliminaro o inserire due righe, facilmente li puoi implementare.

    modello = estende AbstractTableModel, e definisce la struttura della tabella
    tabellina = è il Object[][] che contine gli oggetti della tabella

    codice:
    void inserisciRiga(String colonna1,String colonna2,String colonna3) throws Exception{
      int lunghezza = modello.tabellina.length;
      Object[][] datiTemp = new Object[(lunghezza + 1)][3];
      for(int ciclo1 = 0;ciclo1 < lunghezza;ciclo1++){
        for(int ciclo2 = 0;ciclo2 < 3;ciclo2++){
          datiTemp[ciclo1][ciclo2] = modello.tabellina[ciclo1][ciclo2];
        }
      }
    
      datiTemp[lunghezza][0] = new String(colonna1);
      datiTemp[lunghezza][1] = new String(colonna2);
      datiTemp[lunghezza][2] = new String(colonna3);
      modello.tabellina = datiTemp;
      modello.fireTableRowsInserted(lunghezza,lunghezza);
    }
    fireTableRowsInserted(int, int)= i due parametri sono la rima minima e la riga massima del blocco di rige inserito

    posizione = è la posizione da eliminare, la prima è la 0

    codice:
      void eliminaRiga(int posizione) throws Exception{
      int ciclo3 = 0;
      int lunghezza = modello.tabellina.length;
      Object[][] datiTemp = new Object[(lunghezza - 1)][3];
      for(int ciclo1 = 0;ciclo1 < lunghezza;ciclo1++){
        if(ciclo1 != posizione){
          for(int ciclo2 = 0;ciclo2 < 3;ciclo2++){
            datiTemp[ciclo3][ciclo2] = modello.tabellina[ciclo1][ciclo2];
          }
          ciclo3++;
        }
      }
      modello.tabellina = datiTemp;
      modello.fireTableRowsDeleted(posizione,posizione);
    }
    fireTableRowsDeleted(int, int)= i due parametri sono la rima minima e la riga massima del blocco di rige eliminato

    Se però, oltre ad eliminare o inserire una righa cambi anche il valore delle precedenti devi richiamare anche il metodo fireTableRowsUpdated(int, int).

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    378
    intanto grazie per l'aiuto... Però nn capisco che valore devo dare alla variabile "modello" !?!?

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    71
    Scusa non avevo guardato bene il codice cha avevi postato.
    Io ho definito in modo diverso la mia tabella, ho usato la classe AbstractTableModel per definire la struttura interna della tabella, puoi trovare un esempio nel tutorial.
    Questo oggetto ha i seguenti metodi fireTableRowsDeleted, fireTableCellUpdated e fireTableChanged, servono per aggiornare la vista della tabella se viene modificato l'Object[][] che contiene i dati.

    Il "modello" del mio codice è il modello della tabella che estende AbstractTableModel.

    Mi sono spiegato un po' meglio?

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    378
    penso di aver capito, il "modello" sarebbe la classe che estende AbstractTableModel...

    io nella mia tabella devo inserire in una colonna immagini e nelle altre due del testo, hai mica un esempio che possa fare al caso mio ?!?!?

    grazie...

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    71
    Mi spiace quello no; prova a controllare nel tutorial, mi sebrava ci fosse in esempio con le immagini nella tabella, però potrei sbaglairmi.

    Ciao

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    378
    scusa ma dove sarebbe il tutorial ??

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    71
    Lo trovi sul sito della sun.
    Non mi ricordo l'idirizzo, ma mi sembra nella pagina dove scerichi i javaDoc.

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.