Ein Beispiel für die Erstellung einer einfachen Tabelle
Die Klasse SimpleTableClass stellt einen JFrame
bereit, in den ein Scrollbereich und in diesen eine JTable
eingebettet werden. Vor dieser Einbettung wird die
Tabelle durch die Methode setColumnWidth()
bezüglich ihrer Spaltenbreite formatiert. Sie macht
nichts anderes, als in einer Schleife alle Spalten zu
durchlaufen und zwei Spalten auf eine vorher als
Instanzvariablen definierte, bevorzugte Breite zu
setzen.
Bei ihrer Initialisierung bekommt das JTable-Objekt
eine Instanz eines TableModels übergeben, das den
Tabellen-Inhalt verwaltet.
Die Model-Klasse, die
sich von DefaultTableModel ableitet, besitzt
hier lediglich einen Parameter-losen Konstruktor. In ihm
wird durch die Methode initModelData() ein
provisorischer Tabelleninhalt erzeugt, der
natürlich beliebig ersetzt werden kann.
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
public class SimpleTableClass {
private final int small = 50;
private final int big = 150;
private JTable table;
public SimpleTableClass() {
table = new JTable(new SimpleTableModel());
setColumnWidth();
JScrollPane sPane = new JScrollPane(table);
JFrame frame = new JFrame("Einfache Tabelle");
frame.add(sPane);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocation(200, 100);
frame.setVisible(true);
}
private void setColumnWidth() {
for (int i = 0; i < table.getColumnCount(); i++) {
TableColumn c = table.getColumnModel().getColumn(i);
switch (i) {
case 1:
c.setPreferredWidth(small);
break;
case 4:
c.setPreferredWidth(big);
break;
default:
c.setPreferredWidth(JTable.AUTO_RESIZE_ALL_COLUMNS);
}
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> new SimpleTableClass());
}
}
class SimpleTableModel extends DefaultTableModel {
private int rows = 30, cols = 10;
private Object[] rowData = new Object[cols];
public SimpleTableModel() {
super();
initModelData();
}
private void initModelData() {
for (int i = 0; i < cols; i++) {
this.addColumn(Integer.toString(i));
}
for (int j = 0; j < rows; j++) {
for (int i = 0; i < cols; i++) {
rowData[i] = j + " | " + i;
}
this.addRow(rowData);
}
}
}
Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.