PDA

Visualizza la versione completa : [JAVA] Tabelle


Zero-2
27-12-2002, 19:27
Come posso creare delle Tabelle che abbiano le colonne di larghezza diversa?Dato che se uso i costruttori di JTable , me le crea tutte identiche?

TNX

Sergio Pedone
29-12-2002, 01:18
Ciao Zero-2 !
Ti ho preparato del codice di esempio.
Quando ti interessa personalizzare alcuni componenti, prova ad utilizzare i loro 'modelli logici interni'.


import java.awt.Dimension;
import java.util.Vector;
import javax.swing.*;
import javax.swing.table.*;

class TableExample extends JFrame {

TableExample() {
super("Address Book");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
///////////////////////////////////////////////
// n di righe
int rows = 10;
// n di colonne
int columns = 4;
// etichette colonne
String[] labels = {"Column 0", "Column 1", "Column 2", "Column 3"};
// larghezza colonne
int[] widths = {50, 70, 120, 100};
// vettore dati tabella
Vector data = new Vector(0, 1);
// vettore colonne tabella
Vector columnNames = new Vector(0, 1);
// popolo la tabella
for(int i = 0; i < rows; i++) {
// vettore singola riga tabella
Vector row = new Vector();
for(int j = 0; j < columns; j++) {
row.addElement("value " + i + j);
}
data.addElement(row);
}
// intestazioni colonne
for(int i = 0; i < columns; i++) {
columnNames.addElement(labels[i]);
}
// modello dati della tabella
DefaultTableModel tableModel = new DefaultTableModel(data, columnNames);
// modello attributi delle colonne
DefaultTableColumnModel columnModel = new DefaultTableColumnModel();
for(int i = 0; i < columns; i++) {
// modello attributi colonna singola
TableColumn column = new TableColumn(i, widths[i]);
column.setHeaderValue(labels[i]);
columnModel.addColumn(column);
}
// la tabella
JTable table = new JTable(tableModel, columnModel);
table.setPreferredScrollableViewportSize(new Dimension(350, 100));
JScrollPane scroll = new JScrollPane(table);
///////////////////////////////////////////////////
getContentPane().add(scroll);
pack();
setVisible(true);
}

public static void main(String[] args) {
new TableExample();
}

}


;)

Zero-2
29-12-2002, 11:47
Tnx :)
Non si pu ovviare al fatto che la tabella si estende , all'ingrandirsi del frame , solo in orizzontale lasciando tutto quello spazio inutilizzato in basso??
Si deve ridimensionare il JViewport?? :)
Tnx

Astor
29-12-2002, 14:13
JTable table = new JTable(...);

se vuoi settare la dimensione delle colonne:

// questa la prima colonna:
table.getColumnModel().getColumn(0).setPreferredWi dth(40);

// seconda colonna:
table.getColumnModel().getColumn(1).setPreferredWi dth(120);

// terza:
table.getColumnModel().getColumn(2).setPreferredWi dth(35);

e cos via per tutte le colonne che hai!

Ciao - Astor

Sergio Pedone
29-12-2002, 16:24
Originariamente inviato da Zero-2
Tnx :)
Non si pu ovviare al fatto che la tabella si estende , all'ingrandirsi del frame , solo in orizzontale lasciando tutto quello spazio inutilizzato in basso??
Si deve ridimensionare il JViewport?? :)
Tnx

Non ho ben capito.
Vuoi che all'interno del JScrollPane si visualizzi solo la tabella senza lo spazio non occupato ?
Non ho ancora provato, ma credo che proverei ad aggionare l'altezza delle righe della tabella al variare delle dimensioni del contenitore in cui inserita.

Ciao !

Zero-2
29-12-2002, 16:25
Ho risolto tnx :D:D:D:metallica

Sergio Pedone
29-12-2002, 16:38
Cosa hai fatto ?

Zero-2
29-12-2002, 16:45
Ho solo adattato il tuo codice al mio programma e funziona tutto alla perfezione :D

Non che potresti anche aiutarmi per l'altro postc he ho fattO??
:)

grifis78
10-01-2010, 11:11
Scusate se ripesco questo 3d vecchio, ma vorrei utilizzare questa classe con alcune modifiche.

Mi servirebbe che, una volta scritto un valore in una cella e premuto invio, il focus si spostasse nella cella accanto e non nella riga sottostante. Se invece premo invio nell'ultima cella della riga, si passa allora alla riga sottostante. Come posso fare?

Se la domanda troppo specifica me ne scuso fin d'ora, ma ancora non sono pratico di Java!

alka
10-01-2010, 15:31
Originariamente inviato da grifis78
Scusate se ripesco questo 3d vecchio, ma vorrei utilizzare questa classe con alcune modifiche.

Non si risollevano discussioni concluse da tempo.

Apri una nuova discussione seguendo il Regolamento (http://forum.html.it/forum/showthread.php?s=&threadid=973889) di quest'area, descrivi dettagliatamente il tuo problema e - se occorre - inserisci al massimo un collegamento a questo thread, nel caso possa essere utile a specificare ulteriori dettagli.

Loading