TableColumn (Java API)
Eine TableColumn
stellt eine einzelne Spalte in einer JTable dar. Eine TableColumn kann, muss aber nicht, spezielle Informationen zu der repräsentierten Spalte haben:
- Den TableCellRenderer mit dem einzelne Zellen der Spalte gezeichnet werden.
- Den TableCellEditor mit dem der Benutzer einzelne Zellen der Spalte verändern kann.
- Grössenangaben wie minimale/maximale und bevorzugte Grösse
Die JTable erzeugt normalerweise TableColumns automatisch, sobald sie benötigt werden. Man kann dieses Verhalten aber mit der Methode setAutoCreateColumnsFromModel abschalten, und jede Spalte selbst erzeugen. Das folgende Beispiel zeigt eine JTable, deren TableModel drei Spalten vorgibt, die aber vier Spalten anzeigt.
package demo;
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.*;
public class JTableDemo{
public static void main( String[] args ){
// Die JTable initialisieren
JTable table = new JTable();
// Spalten sollen nicht automatisch erzeugt werden
table.setAutoCreateColumnsFromModel( false );
// Daten setzen
table.setModel( createModel() );
// Spalten bestimmen
table.setColumnModel( createColumnModel() );
// Tabelle anzeigen
JFrame frame = new JFrame( "Demo" );
frame.add( new JScrollPane( table ), BorderLayout.CENTER );
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.pack();
frame.setVisible( true );
}
public static TableColumnModel createColumnModel(){
// Ein Behälter für die Spalten erzeugen
TableColumnModel columns = new DefaultTableColumnModel();
// Die 4 Spalten erzeugen. Jede Spalte kann verschiedene
// Eigenschaften haben.
TableColumn c1 = new TableColumn( 0 );
c1.setHeaderValue( "ColA" );
c1.setPreferredWidth( 35 );
c1.setMaxWidth( 50 );
TableColumn c2 = new TableColumn( 1 );
c2.setHeaderValue( "ColB" );
c2.setPreferredWidth( 60 );
c2.setMinWidth( 60 );
c2.setMaxWidth( 120 );
TableColumn c3 = new TableColumn( 2 );
c3.setHeaderValue( "ColC" );
c3.setPreferredWidth( 10 );
c3.setResizable( false );
// Die letzte Spalte zeigt stets dasselbe wie die
// zweitletzte Spalte, denn beide Spalten benutzen
// dieselbe Model-Spalte als Datenquelle
TableColumn c4 = new TableColumn( 2 );
c4.setHeaderValue( "ColC-2" );
c4.setPreferredWidth( 10 );
columns.addColumn( c1 );
columns.addColumn( c2 );
columns.addColumn( c3 );
columns.addColumn( c4 );
return columns;
}
public static TableModel createModel(){
DefaultTableModel model = new DefaultTableModel(
new Object[]{ "A", "B", "C" }, 0);
model.addRow( new Object[]{ "C1", "C2", "C3" });
return model;
}
}
Fragen
Das Thema wurde nicht ausreichend behandelt? Du hast Fragen dazu und brauchst weitere Informationen? Lass Dir von uns helfen!
- Besuche uns im Byte-Welt-Forum
- Besuche unseren Chat
Wir helfen dir gerne!
Dir hat dieser Artikel gefallen? Oder Du hast Fehler entdeckt und möchtest zur Berichtigung beitragen? Prima! Schreibe einen Kommentar!
Du musst angemeldet sein, um einen Kommentar abzugeben.