Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 32
  1. #1

    JTable, inserimento righe

    Ho una cartella, da questa estrapolo i file contenuti in essa, devo stampare a video alcuni loro attributi in formato tabellare.

    codice:
    class Mostra_Diff extends JPanel{
         
         File dir1, dir2;
         File[] files;
         String col [] = {"File","Cartella","Dimensione","Data","Ora"};
         String data[][];
         
         JTableHeader head;
         JScrollPane scroll;
         JTable table;
         DefaultTableModel modeltable;
         
         
         Mostra_Diff(){
              
              dir1= Confronta_Panel.dir;
              dir2= Confronta_Panel_2.dir;
              files = dir1.listFiles();           
                                  
              modeltable = new DefaultTableModel(data,col);
              
              if (files == null) {
                  // Either dir does not exist or is not a directory
              } 
              else{
                  for (int i=0; i<files.length; i++) {
                  // Get filename of file or directory
                  String filename[] = {files[i].getName(),files[i].getParent(), ""+files[i].getTotalSpace()};
                  modeltable.addRow(filename);
                  }
              }         
              
              table = new JTable(modeltable);
              table.setIntercellSpacing(new Dimension(20,1));
              scroll = new JScrollPane(table);
              SetRowHight(table);
              table.setColumnSelectionAllowed(true);
              table.setAutoCreateRowSorter(true);
              head = table.getTableHeader();
              //head.setBackground(Color.YELLOW);
              
              add(scroll);
                 
              Utilities.settingPanel(this);       
              setLayout(new FlowLayout());
              
         }
    
         public void SetRowHight(JTable table){
              
                int height = table.getRowHeight();
                table.setRowHeight(height+10);
         }
         
    }
    Il problema sta in questo ciclo
    codice:
                  for (int i=0; i<files.length; i++) {
                  // Get filename of file or directory
                  String filename[] = {files[i].getName(),files[i].getParent(), ""+files[i].getTotalSpace()};
                  modeltable.addRow(filename);
    perchè se ci metto un
    codice:
        String[] filename = { "Hannah", "Arendt", "1906-1975", "  ", "  " };
        model.addRow(filename);
    funziona

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    per non saper né leggere né scrivere prenderei questa riga (Che so funzionante)
    Codice PHP:
     String[] filename = { "Hannah""Arendt""1906-1975""  ""  " }; 
    e conterei il numero di elementi dell'array
    Hanna
    Arendt
    1906
    ""
    ""

    quindi 5

    poi prenderei

    Codice PHP:
    String filename[] = {files[i].getName(),files[i].getParent(), ""+files[i].getTotalSpace()}; 
    e farei lo stesso mestiere, quindi

    files[i].getName()
    files[i].getParent()
    spazio

    e sono 3...se sono previste 5 colonne i conti non tornano
    RTFM Read That F*** Manual!!!

  3. #3
    Mi sono sbagliato a incollare, non funziona come dici tu, avendo 5 elementi, in questo modo:
    codice:
    for (int i=0; i<files.length; i++) {
                 
    String filename[] ={ files[i].getName(), files[i].getParent()," " + files[i].getTotalSpace(), "aaa", "bbb"};
    
     modeltable.addRow(filename);
    
    }

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    allora descrivi l'errore, perché da quel codice che avevi postato in realtà il modello era creato male...perché non crei un arraylist che passi al modello (settando i dati tutti insieme)?
    anche tu, stai mescolando la logica di gestione con la logica di visualizzazione (che è fondmentalmente errato)
    RTFM Read That F*** Manual!!!

  5. #5
    Chiedo scusa, l'errore è che semplicemente mi disegna la tabella, con le intestazioni delle colonne, ma senza dati. Quindi tu dici...

    io ho
    Codice PHP:
    class Mostra_Diff extends JPanel{

            
    super();
            
    String col [] = {"File","Cartella","Dimensione","Data","Ora"};
            
    String data[][];
            
    JTable table
            
    DefaultTableModel modeltable;
            ....
            .... 
    e poi per riempire la tabella farei (c'è un errore nella definizione di "data", ma non capisco dove, mi dice che ci vuole un ';' magari perchè ne inserisco solo uno e invece aspetta più elementi?).

    Codice PHP:
    Mostra_Diff(){
              
    files dir1.listFiles();

              for (
    int i=0i<files.lengthi++)
              
    data= {{files[i].getName(),files[i].getParent(), ""+files[i].getTotalSpace(),"l","a"}} ;  
                  
              
    modeltable = new DefaultTableModel(data,col);
              
    table = new JTable(modeltable);
              ....
              .... 

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Riportate sempre gli errori.

    Comunque non capisco che hai fatto nella riga ove assegni quella roba a data...

  7. #7
    Non badare al super(), nella classe, ho sbagliato a incollare, andava nel costruttore.
    Comunque in linea di massima, io ho un campo
    Codice PHP:
    File dir 
    da cui prendo la lista dei file della rispettiva cartella, questi li devo inserire nella tabella, assegnando a ogni colonna un valore (getTototalSpace, getName, ......) , e faccio così per tutti i file.

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Ma non è ciò che ti ho chiesto però.
    A data assegni qualcosa, o almeno è ciò che vorresti fare... data è una matrice!

  9. #9
    e sì è una matrice, però ci posso assegnare solo un membro alla volta, perchè devo scandire la lista dei file di una cartella, contenuta in un vettore: quindi col ciclo scandisco il vettore e assegno alla matrice un membro alla volta.

    Ho provato a modificare, ma non funziona


    Codice PHP:
    files dir1.listFiles(); 

    for (
    int i=0i<files.lengthi++) 
    data[i]= { {files[i].getName(), files[i].getParent(), "  " files[i].getTotalSpace(), " l "" a "};} ; 
    però non va bene l'assegnazione di data, lo so, me lo segna.. ma non riesco a capire dove

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    data contiene oggetti String, quindi non puoi assegnare altro che String.

    In primis devi essere sicuro di aver inizializzato la matrice; la seconda cosa è specificare gli indici.
    Stando a quanto dici "scandisco il vettore ed assegno un membro alla volta", mi sembra di capire che le virgole sarebbero le colonne di quella riga. No? Ne hai 5.
    Quindi puoi fare:

    codice:
    for(int i=0; i<files.length; i++) {
      data[i][0] = files[i].getName();
      data[i][1] = files[i].getParent();
      data[i][2] = (files[i].getTotalSpace()).toString();
      data[i][3] = "1";
      data[i][4] = "a";
    }

    PS: l'assegnazione a data che hai scritto tu, è tutta errata. Sia nel modo in cui assegni gli elementi, sia al termine ove usi i punto e virgola.

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.