TableColumn (Java API)
Aus Byte-Welt Wiki
Version vom 28. Januar 2012, 07:32 Uhr von AndreUhres (Diskussion | Beiträge)
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.
<code=java>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; }