Visualizzazione dei risultati da 1 a 2 su 2

Discussione: [JAVA] JTable

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    118

    [JAVA] JTable

    Ciao a tutti, vorrei sapere come si fa a impostare un titolo per una data colonna. Cioè io ho una JTable di 4 colonne, vorrei che sopra la colonna numero 1 ci sia una sorta di label o bottone che si voglia che indichi il tipo di dato (il testo cmq lo decido io) che si troverà in quella colonnna. Non so se mi sono spiegato, una cosa tipo uhm........ avete presente la finestra search di winmx? Dove una volta fatta una ricerca vi scrive i file in ordine, e all'inizio della tabella (che poi è una tabella) c'è scritto
    Nome Bytes User
    bla 123 aribla
    .......................................

    Grazie a tutti e scusate per la spiegazione un pò stravagante

  2. #2
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Dipende da come crei la tabella. Ti consiglio di leggerti il tutorial sul sito della sun sulle JTable:

    http://java.sun.com/docs/books/tutor...nts/table.html

    Una tabella la puoi creare passando al costruttore un array bidimensionale di Object che rappresentano gli elementi della tabella, e un array di Object che rappresentano le intestazioni delle colonne (e che possono ad esempio essere stringhe):

    codice:
    String[] columnNames = {"First Name",
                            "Last Name",
                            "Sport",
                            "# of Years",
                            "Vegetarian"};
    
    Object[][] data = {....}
    
    JTable table = new JTable(data, columnNames);
    oppure puoi usare invece degli array dei Vector.

    Il metodo più generale è quello di implementarti un tuo TableModel che viene passato come argomento della tabella; il TableModel rappresenta il modello della tabella ed è ciò che contiene e gestisce effetttivamente i dati, mentre la tabella si limita a visualizzarli, permettendo all'utente di modificarli. Per crearti un tuo TableModel devi estendere la classe AbstractTableModel ed implementare una serie di metodi; in particolare devi implementare un metodo che prende un intero k e restituisce una stringa che rappresenta il nome della colonna k; un metodo che prende un intero i e un intero j e restituisce il dato di posizione (i, j), ecc ecc ...

    Ad esempio sul sito della sun è riportato questo esempio:

    codice:
    class MyTableModel extends AbstractTableModel {
        private String[] columnNames = ...//qui metti i nomi delle colonne...
        private Object[][] data = ...//è l'array bidimensionle dei dati; puoi inizializzaarlo qui
        //oppure passarlo al costruttore
    
        //ritorna il numero di colonne
        public int getColumnCount() {
            return columnNames.length;
        }
    
        //ritorna il numero di righe
        public int getRowCount() {
            return data.length;
        }
        
        //ritorna il nome della colonna numero 'col'
        public String getColumnName(int col) {
            return columnNames[col];
        }
    
        //ritorna il dato di posizione (row, col)
        public Object getValueAt(int row, int col) {
            return data[row][col];
        }
    
        //ritorna la classe a cui appartiene i dati della colonna numero 'c'
        //puoi lasciare immodificato questo metodo
        public Class getColumnClass(int c) {
            return getValueAt(0, c).getClass();
        }
    
        /*
         * Don't need to implement this method unless your table's
         * editable.
         */
        public boolean isCellEditable(int row, int col) {
            //Note that the data/cell address is constant,
            //no matter where the cell appears onscreen.
            if (col < 2) {
                return false;
            } else {
                return true;
            }
        }
    
        /*
         * Don't need to implement this method unless your table's
         * data can change.
         */
        public void setValueAt(Object value, int row, int col) {
            data[row][col] = value;
            fireTableCellUpdated(row, col);
        }
        ...
    }
    Quindi per creare la tabella:

    JTable table = new JTable(new MyTableModel());



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.