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

    [java] Nome colonne JTable

    Ciao,
    ho spulciato la documentazione di java ma non sono stato capace di trovare nilla... mille volte ho trovato il metodo getColumnName() ma mai il rispettivo set...

    Io devo riuscire a creare una JTable e successivamente settarci il nome delle colonne e i dati contenuti.

    Ecco il codice:

    codice:
    public class ServiziJTable extends JTable{
      public ServiziJTable(){
    
        TableModel dataModel = new AbstractTableModel(){
          public int getColumnCount(){
            return 7;
          }
          public int getRowCount(){
            return 100;
          }
          public Object getValueAt(int row, int col){
            return new Integer(row*col);
          }
        };
    
        this.setModel(dataModel);
    
        ///////////////////////////// qua dovrei settare il nome delle colonne \\\\\\\\\\\\\\\\\\\\\\\\\\\
    
        this.getColumnModel().getColumn(0).setMaxWidth(100);
        this.getColumnModel().getColumn(1).sizeWidthToFit();
        this.getColumnModel().getColumn(2).setPreferredWidth(200);
        this.getColumnModel().getColumn(3).setPreferredWidth(200);
        this.getColumnModel().getColumn(4).setMaxWidth(50);
        this.getColumnModel().getColumn(5).setMaxWidth(50);
        this.getColumnModel().getColumn(6).setMaxWidth(30);
    
      }
    Please...

  2. #2

    Re: [java] Nome colonne JTable

    Originariamente inviato da superpelo
    Ciao,
    ho spulciato la documentazione di java ma non sono stato capace di trovare nilla... mille volte ho trovato il metodo getColumnName() ma mai il rispettivo set...

    Io devo riuscire a creare una JTable e successivamente settarci il nome delle colonne e i dati contenuti.

    Ecco il codice:

    codice:
    public class ServiziJTable extends JTable{
      public ServiziJTable(){
    
        TableModel dataModel = new AbstractTableModel(){
          public int getColumnCount(){
            return 7;
          }
          public int getRowCount(){
            return 100;
          }
          public Object getValueAt(int row, int col){
            return new Integer(row*col);
          }
        };
    
        this.setModel(dataModel);
    
        ///////////////////////////// qua dovrei settare il nome delle colonne \\\\\\\\\\\\\\\\\\\\\\\\\\\
    
        this.getColumnModel().getColumn(0).setMaxWidth(100);
        this.getColumnModel().getColumn(1).sizeWidthToFit();
        this.getColumnModel().getColumn(2).setPreferredWidth(200);
        this.getColumnModel().getColumn(3).setPreferredWidth(200);
        this.getColumnModel().getColumn(4).setMaxWidth(50);
        this.getColumnModel().getColumn(5).setMaxWidth(50);
        this.getColumnModel().getColumn(6).setMaxWidth(30);
    
      }
    Please...
    Perchè getColumnModel ti ritorna il modello della JTable come oggetto di tipo TableModel che è solo l'interfaccia base, fai un cast a DefaultTableModel e usa set columnIdentidiers passando un vector incui per le colonne di cui non devi cambiare il nome usi il valore ritornato da getColumnName
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  3. #3
    Mi da un errore a runtime sul cast;

    ho fatto così, ho capito giusto?

    codice:
    public class ServiziJTable extends JTable{
      public ServiziJTable(){
    
        TableModel dataModel = new AbstractTableModel(){
          public int getColumnCount(){
            return 7;
          }
          public int getRowCount(){
            return 100;
          }
          public Object getValueAt(int row, int col){
            return new Integer(row*col);
          }
        };
    
        this.setModel(dataModel);
    
    
        ((DefaultTableModel)this.getColumnModel()).setColumnIdentifiers(getColumnNames());
    
        this.getColumnModel().getColumn(0).setMaxWidth(100);
        this.getColumnModel().getColumn(1).sizeWidthToFit();
        this.getColumnModel().getColumn(2).setPreferredWidth(200);
        this.getColumnModel().getColumn(3).setPreferredWidth(200);
        this.getColumnModel().getColumn(4).setMaxWidth(50);
        this.getColumnModel().getColumn(5).setMaxWidth(50);
        this.getColumnModel().getColumn(6).setMaxWidth(30);
    
      }
    
      private String[] getColumnNames(){
        String[] columnNames = {"Data","Cliente","Partenza","Arrivo","Colli","Importo","Iva"};
        return columnNames;
      }

  4. #4
    Originariamente inviato da superpelo
    Mi da un errore a runtime sul cast;

    ho fatto così, ho capito giusto?
    Allora postami tutto il codice pronto all'esecuzione se no mi è difficile capire il problema
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  5. #5
    Questa è la classe completa, viene istanziata in un normale JScrollPanel.

    codice:
    import javax.swing.table.*;
    import javax.swing.*;
    
    public class ServiziJTable extends JTable{
      public ServiziJTable(){
        TableModel dataModel = new AbstractTableModel(){
          public int getColumnCount(){
            return 7;
          }
          public int getRowCount(){
            return 100;
          }
          public Object getValueAt(int row, int col){
            return new Integer(row*col);
          }
        };
    
        this.setModel(dataModel);
    
    
        ((DefaultTableModel)this.getColumnModel()).setColumnIdentifiers(getColumnNames());
    
        this.getColumnModel().getColumn(0).setMaxWidth(100);
        this.getColumnModel().getColumn(1).sizeWidthToFit();
        this.getColumnModel().getColumn(2).setPreferredWidth(200);
        this.getColumnModel().getColumn(3).setPreferredWidth(200);
        this.getColumnModel().getColumn(4).setMaxWidth(50);
        this.getColumnModel().getColumn(5).setMaxWidth(50);
        this.getColumnModel().getColumn(6).setMaxWidth(30);
    
      }
    
      private String[] getColumnNames(){
        String[] columnNames = {"Data","Cliente","Partenza","Arrivo","Colli","Importo","Iva"};
        return columnNames;
      }
    
      private Object[][] getTableData(){
        Object[][] data = {{"1/12/2005", "Cliente1","partenza (Nicola)","arrivo (Marco)","2","15.23€","[1]"}};
        return data;
      }
    
    }

  6. #6
    Non castare così non va bene,stiamo castando un TableColumnModel a DefaultTableModel, il mio suggerimento quindi è sbagliato anche perchè non ho capito bene cosa vuio fare.Probabilmente non stai vacendo le cose nel modo giusto comunque perchè vedo sei this.SetQualcosa mischiati con ridefinizioni, insomma un pò un casino.Fai prima a dirmi da dove vuoi partire e dove devi arrivare e insieme procediamo con ordine ripartendo da capo.Cioe la tua JTable deve avere questi dati e queste proprietà elencamele e poi ci ragioniamo assieme.
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  7. #7
    Ho risolto il mio problema con questo codice... ma ora me ne si presenta un altro... come facio a inserire un bottone all'interno di una cella?

    codice:
    import javax.swing.table.*;
    import javax.swing.*;
    
    public class ServiziJTable extends JTable{
      public ServiziJTable(){
    
        TableModel model = new AbstractTableModel(){
          private String[] columnNames = getColumnNames();
          private Object[][] data = getTableData();
    
          public int getColumnCount() {
            return columnNames.length;
          }
    
          public int getRowCount() {
            return data.length;
          }
    
          public String getColumnName(int col) {
            return columnNames[col];
          }
    
          public Object getValueAt(int row, int col) {
            return data[row][col];
          }
    
          public Class getColumnClass(int c) {
            return getValueAt(0, c).getClass();
          }
        };
    
        this.setModel(model);
    
        this.getColumnModel().getColumn(0).setMaxWidth(70);
        this.getColumnModel().getColumn(1).sizeWidthToFit();
        this.getColumnModel().getColumn(2).setPreferredWidth(200);
        this.getColumnModel().getColumn(3).setPreferredWidth(200);
        this.getColumnModel().getColumn(4).setMaxWidth(50);
        this.getColumnModel().getColumn(5).setMaxWidth(70);
        this.getColumnModel().getColumn(6).setMaxWidth(40);
        //this.getColumnModel().getColumn(7).setMaxWidth(40);
      }
    
      private String[] getColumnNames(){
        String[] columnNames = {"Data","Cliente","Partenza","Arrivo","Colli","Importo","Iva","Note"};
        return columnNames;
      }
    
      private Object[][] getTableData(){
        Object[][] data = {{"1/12/2005", "Cliente1","partenza (Nicola)","arrivo (Marco)","2","15.23€","[1]",new JButton("Vedi")},{"1/12/2005", "Cliente2","partenza (Riccardo)","arrivo (Marco)","2","10.00€","[1]",null}};
        return data;
      }
    }

  8. #8
    Devi modificare il cell renderer.Leggiti il tutorial della sun se vuoi un consiglio, a molte domande sapresti dare risposta senza neanche postare qua
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

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.