Hallo,
Problem: Konflikt zwischen DefaultTableModel und DefaultTableColumnModel
Wenn die 5 Zeilen (siehe Zeile 79-83) auskommentiert bleiben, wird die Tabelle mit den formatierten Spaltenüberschriften angezeigt.
Wenn diese Zeilen auskommentiert werden, sollen zusätzlich zwei Zeilen mit Daten angezeigt werden.
Statt dessen wird die komplette Tabelle nicht mehr aufgebaut.
Nach Tagen des Suchens und Rumprobierens bin ich nun mit meinem Latein am Ende und bitte um Unterstürtzung vom Forum.
Bitte keine allgemeine Beschreibung, sondern einen konkreten Verbesserungsvorschlag im Code.
Vielen Dank im voraus
Jan
Nachfolgender Code kann komplett rauskopiert werden uns ist eigenständig lauffähig.
Problem: Konflikt zwischen DefaultTableModel und DefaultTableColumnModel
Wenn die 5 Zeilen (siehe Zeile 79-83) auskommentiert bleiben, wird die Tabelle mit den formatierten Spaltenüberschriften angezeigt.
Wenn diese Zeilen auskommentiert werden, sollen zusätzlich zwei Zeilen mit Daten angezeigt werden.
Statt dessen wird die komplette Tabelle nicht mehr aufgebaut.
Nach Tagen des Suchens und Rumprobierens bin ich nun mit meinem Latein am Ende und bitte um Unterstürtzung vom Forum.
Bitte keine allgemeine Beschreibung, sondern einen konkreten Verbesserungsvorschlag im Code.
Vielen Dank im voraus
Jan
Nachfolgender Code kann komplett rauskopiert werden uns ist eigenständig lauffähig.
Java:
package Tabelle;
import java.awt.Color;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableColumnModel;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
public class Tabelle extends javax.swing.JFrame {
//TabellenModel
DefaultTableModel grdKontenrahmenModel = new DefaultTableModel();
DefaultTableColumnModel grdKontenrahmenSpaltenModel = new DefaultTableColumnModel();
//TabellenRenderer
DefaultTableCellRenderer TabellenRendererTitelLinks = new DefaultTableCellRenderer();
DefaultTableCellRenderer TabellenRendererTitelMitte = new DefaultTableCellRenderer();
DefaultTableCellRenderer TabellenRendererTitelRechts = new DefaultTableCellRenderer();
//TabellenIndizes
private static final int IndexSpalte1 = 0;
private static final int IndexSpalte2 = 1;
private static final int IndexSpalte3 = 2;
/** Creates new form NewJFrame */
public Tabelle()
{
initComponents();
//Zuweisung Model
tabelleTest.setModel(grdKontenrahmenModel);
tabelleTest.setColumnModel(grdKontenrahmenSpaltenModel);
//Renderer
TabellenRendererTitelLinks.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
TabellenRendererTitelLinks.setBackground(Color.WHITE);
TabellenRendererTitelMitte.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
TabellenRendererTitelMitte.setBackground(Color.WHITE);
TabellenRendererTitelRechts.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
TabellenRendererTitelRechts.setBackground(Color.WHITE);
//Spaltenüberschriften
TableColumn Spalte1 = new TableColumn();
Spalte1.setHeaderValue("Spalte 1");
Spalte1.setModelIndex(IndexSpalte1);
grdKontenrahmenSpaltenModel.addColumn(Spalte1);
TableColumn Spalte2 = new TableColumn();
Spalte2.setHeaderValue("Spalte 2");
Spalte2.setModelIndex(IndexSpalte2);
Spalte2.setResizable(false);
grdKontenrahmenSpaltenModel.addColumn(Spalte2);
TableColumn Spalte3 = new TableColumn();
Spalte3.setHeaderValue("Spalte 3");
Spalte3.setModelIndex(IndexSpalte3);
Spalte3.setCellRenderer(TabellenRendererTitelLinks);
grdKontenrahmenSpaltenModel.addColumn(Spalte3);
//Spaltenbreiten
grdKontenrahmenSpaltenModel.getColumn(IndexSpalte1).setMinWidth(100);
grdKontenrahmenSpaltenModel.getColumn(IndexSpalte1).setMaxWidth(200);
grdKontenrahmenSpaltenModel.getColumn(IndexSpalte1).setPreferredWidth(100);
grdKontenrahmenSpaltenModel.getColumn(IndexSpalte2).setMinWidth(100);
grdKontenrahmenSpaltenModel.getColumn(IndexSpalte2).setMaxWidth(100);
grdKontenrahmenSpaltenModel.getColumn(IndexSpalte2).setPreferredWidth(50);
grdKontenrahmenSpaltenModel.getColumn(IndexSpalte3).setMinWidth(600);
grdKontenrahmenSpaltenModel.getColumn(IndexSpalte3).setMaxWidth(600);
grdKontenrahmenSpaltenModel.getColumn(IndexSpalte3).setPreferredWidth(600);
//Spaltenformatierung
grdKontenrahmenSpaltenModel.getColumn(IndexSpalte1).setHeaderRenderer(TabellenRendererTitelRechts);
grdKontenrahmenSpaltenModel.getColumn(IndexSpalte1).setCellRenderer(TabellenRendererTitelRechts);
grdKontenrahmenSpaltenModel.getColumn(IndexSpalte2).setHeaderRenderer(TabellenRendererTitelMitte);
grdKontenrahmenSpaltenModel.getColumn(IndexSpalte2).setCellRenderer(TabellenRendererTitelMitte);
grdKontenrahmenSpaltenModel.getColumn(IndexSpalte3).setHeaderRenderer(TabellenRendererTitelLinks);
grdKontenrahmenSpaltenModel.getColumn(IndexSpalte3).setCellRenderer(TabellenRendererTitelLinks);
//Hier beginnt das Problem !!!
//Daten (wenn die nachfolgenden 5 Zeilen einkommentiert werden, wird die Tabelle NICHT aufgebaut)
//grdKontenrahmenModel.setColumnCount(0);
//String[] datensatz1 = {"a","b","c"};
//grdKontenrahmenModel.addRow(datensatz1);
//String[] datensatz2 = {"d","e","f"};
//grdKontenrahmenModel.addRow(datensatz2);
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
jScrollPane1 = new javax.swing.JScrollPane();
tabelleTest = new javax.swing.JTable();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
tabelleTest.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
}
));
tabelleTest.getTableHeader().setResizingAllowed(false);
tabelleTest.getTableHeader().setReorderingAllowed(false);
jScrollPane1.setViewportView(tabelleTest);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 459, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(59, 59, 59)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 151, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(90, Short.MAX_VALUE))
);
pack();
}// </editor-fold>//GEN-END:initComponents
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Tabelle().setVisible(true);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable tabelleTest;
// End of variables declaration//GEN-END:variables
}
Zuletzt bearbeitet: