Zellengröße von JTable

Germu

Mitglied
Hallo,

wie schaff ich es das sich sich meine Zellen automatisch an die größe des Zelleninhalts anpassen. Also wen eine 1 drinn steht soll nach der 1 die nächste Zelle beginnen und nicht erst noch 20 Leerzeichen dahinter kommen.

Hoffe mir kann jemand helfen.

Grüsse
Germu
 
Hi, versuch's hiermit:
Code:
    /**
     * Method setBestColumnWidth setzt die Spalte iCol auf eine solche
     * Breite, dass sowohl die Spaltenüberschrift wie auch der breiteste
     * Zelleintrag zu sehen sind.
     * @param iCol
     */
    public void setBestColumnWidth( int iCol ) {
        int hw = getHeaderTextWidth( iCol );
        int cw = getMaxCellTextWidth( iCol );
        int w = hw > cw ? hw : cw;
        getColumn( getColumnName( iCol ) ).setPreferredWidth( w + 10 );
    }
    
    /**
     * Method getHeaderTextWidth liefert die Breite der Spaltenbezeichnung
     * der Spalte iCol
     * @param iCol
     * @return int
     */
    public int getHeaderTextWidth( int iCol ) {
        TableCellRenderer rend = getColumn( getColumnName( iCol ) ).getHeaderRenderer();
        if( rend != null )
            return rend.getTableCellRendererComponent( this, getColumnName( iCol ),
                    false, false, 0, 0 ).getPreferredSize().width ;
        return 0;
    }
    
    /**
     * Method getMaxCellTextWidth liefert die Breite des breitesten Zelleneintrags
     * der Spalte iCol
     * @param iCol
     * @return int
     */
    public int getMaxCellTextWidth( int iCol ) {
        int iMax = 0;
        int w;
        
        for( int r = 0, max = getModel().getRowCount(); r < max; r++ ) {
            Component c = getCellRenderer( r, iCol ).getTableCellRendererComponent(
                    this, getValueAt( r , iCol), false,false, r, iCol );
            w = c.getPreferredSize().width;
            iMax = w > iMax ? w : iMax;
        }
        return iMax;
    }

Gruß
testalucida
 
Zurück