TableColumn (Java API): Unterschied zwischen den Versionen
Aus Byte-Welt Wiki
Zur Navigation springenZur Suche springenK |
K |
||
Zeile 6: | Zeile 6: | ||
Die ''JTable'' erzeugt normalerweise ''TableColumns'' automatisch, sobald sie benötigt werden. Man kann dieses Verhalten aber mit der [[Methode_(Java)|Methode]]'' setAutoCreateColumnsFromModel'' abschalten, und jede Spalte selbst erzeugen. Das folgende Beispiel zeigt eine ''JTable'', deren ''TableModel'' drei Spalten vorgibt, die aber vier Spalten anzeigt. | Die ''JTable'' erzeugt normalerweise ''TableColumns'' automatisch, sobald sie benötigt werden. Man kann dieses Verhalten aber mit der [[Methode_(Java)|Methode]]'' setAutoCreateColumnsFromModel'' abschalten, und jede Spalte selbst erzeugen. Das folgende Beispiel zeigt eine ''JTable'', deren ''TableModel'' drei Spalten vorgibt, die aber vier Spalten anzeigt. | ||
− | < | + | <syntaxhighlight lang="java">package demo; |
import java.awt.BorderLayout; | import java.awt.BorderLayout; | ||
Zeile 81: | Zeile 81: | ||
return model; | return model; | ||
} | } | ||
− | }</ | + | }</syntaxhighlight> |
[[Bild:JTable-Demo.gif|Ergebnis der kompilierten Quelldatei unter Windows XP]] | [[Bild:JTable-Demo.gif|Ergebnis der kompilierten Quelldatei unter Windows XP]] | ||
− | |||
[[Kategorie:Java_API]] | [[Kategorie:Java_API]] | ||
[[Kategorie:Swing]] | [[Kategorie:Swing]] | ||
[[Kategorie:JTable]] | [[Kategorie:JTable]] |
Version vom 14. April 2018, 18:43 Uhr
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;
}
}