Scrollbalken für JTable mit clmHeader

ME34

Grünschnabel
Hallo Leute,

ich bekomme irgenwie den clmHeader nicht in die JTable.

Wenn ich es so mache bekomme ich den Scrollbalken unten von ScrollPane nicht an der Seite aber ja mit clmHeader:

jPanel1.setLayout(new java.awt.GridLayout());

jPanel1.setMinimumSize(new java.awt.Dimension(0, 0));
jPanel1.setPreferredSize(new java.awt.Dimension(0, 0));
jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
jScrollPane1.setViewportView(jTable1);

jPanel1.add(jScrollPane1);

getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);

Und wenn ich es so versuche habe ich beide Scrollbalken aber dafür kein clmHeader.

jPanel1.setLayout(new java.awt.GridLayout());

jPanel1.setMinimumSize(new java.awt.Dimension(0, 0));
jPanel1.setPreferredSize(new java.awt.Dimension(0, 0));
jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
jPanel3.add(jTable1);

jScrollPane1.setViewportView(jPanel3);

jPanel1.add(jScrollPane1);

getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);

Der clmHeader ist vorher über MetaDaten aus dem MySql eingelesen worden.

private void showTableContent() {

if (con != null && dbmd != null){
try{
//Statement Basisschnittstelle für alle SQL-Anweisungsformen
Statement stmt = con.createStatement();
String db = (String)this.DatabasesComboBox.getSelectedItem();
if (db == null || db == "")
return;
//execute um beliebige "unbekannte" SQL-Anweisungen an die Datenbank zu schicken
stmt.execute("USE " + db);
String tbl = (String)this.TablesComboBox.getSelectedItem();
if (tbl == null || tbl == "")
return;
//Select Anweisung durch Statement-Methode executeQuery
ResultSet rs = stmt.executeQuery("SELECT * FROM " + tbl);



//DefaultTableModel wird hier aufgefrischt
tblDataModel = new DefaultTableModel();
//columnHeaders = new Object[clmnCnt];
//columnClasses = new Class[columnHeaders.length];

Vector clmHeader = new Vector();
Vector dataVector = new Vector();

ResultSetMetaData rsmd = rs.getMetaData();
int clmCnt = rsmd.getColumnCount();

//innere Klasse



for(int i = 1; i <= clmCnt;i++)
//Aus MetaData können wir über getColumnName die Namen rausholen
clmHeader.addElement(rsmd.getColumnName(i));

while(rs.next()){
Vector rowVector = new Vector();
for(int i = 1; i <= clmCnt; i++){
//rowVector hat die Zahlen der Spalten
rowVector.addElement(rs.getString(i));
}
//dataVector hat die Zahlen der Zeilen
dataVector.addElement(rowVector);


}

tblDataModel.setDataVector(dataVector,clmHeader);

jTable1.setModel(tblDataModel);


jTable1.updateUI();


//O.K.

//ende der Instanzklasse MyTableModel von Zeile 62:


}catch(SQLException sqle){
sqle.printStackTrace();
}
}
}


Kann mir da bitte jemand weiterhelfen?
 
ME34 hat gesagt.:
Hallo Leute,

ich bekomme irgenwie den clmHeader nicht in die JTable.

Wenn ich es so mache bekomme ich den Scrollbalken unten von ScrollPane nicht an der Seite aber ja mit clmHeader:

Code:
jPanel1.setLayout(new java.awt.GridLayout());

        jPanel1.setMinimumSize(new java.awt.Dimension(0, 0));
        jPanel1.setPreferredSize(new java.awt.Dimension(0, 0));
        jTable1.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ));
        jScrollPane1.setViewportView(jTable1);

        jPanel1.add(jScrollPane1);

        getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);
Und wenn ich es so versuche habe ich beide Scrollbalken aber dafür kein clmHeader.

Code:
jPanel1.setLayout(new java.awt.GridLayout());

        jPanel1.setMinimumSize(new java.awt.Dimension(0, 0));
        jPanel1.setPreferredSize(new java.awt.Dimension(0, 0));
        jTable1.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ));
        jPanel3.add(jTable1);

        jScrollPane1.setViewportView(jPanel3);

        jPanel1.add(jScrollPane1);

        getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);
Kann mir da bitte jemand weiterhelfen?

Die JTable gehört in den Viewport der ScrollPane, nicht in das Panel direkt.
Tip 1: Die PreferredSize hat sicherlich nicht auf 0 zu stehen
Tip 2: In der Linkliste stehen ein paar gute Links zu Tabellen
Tip 3: Nächstes Mal bitte die CODE-Tags verwenden. ;)
 
Jetzt hats geklappt. Ich habe nähmlich AutoResizeMode auf OFF gesetzt.

jTable1.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);
 
Zurück