tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
3623
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Serethos Serethos ist offline Mitglied Gold
    Registriert seit
    Nov 2004
    Beiträge
    127
    Servus

    habt ihr ne idea wie ich bei einen JTable die autosize für die Überschriftenzeile ausschalte.

    denn wenn ich mit

    jTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

    arbeite schiebt er die Felder nicht mehr zusammen aber bei zu großen namem kommt nur noch sowas wie Anschrift des.... und das muss man doch ganz ausschalten können?
     

  2. #2
    Registriert seit
    Apr 2004
    Ort
    Ruhrgebiet
    Beiträge
    1.582
    Moin,
    such mal hier im Forum nach "Optimale Spaltenbreite", "Spaltenbreite anpassen" o.ä. IIRC hatten wir das Thema schon mal.
     

  3. #3
    Serethos Serethos ist offline Mitglied Gold
    Registriert seit
    Nov 2004
    Beiträge
    127
    Servus

    hab dein tip ausprobiert und das forum durchsucht aber nix gefunden hab dann sogar nach JTable gesucht um was zu finden.
    Hab mir die api auch nochmal durchgelesen aber find da auch nix oder bin zu blind

    kannst mir nochmal helfen
     

  4. #4
    Registriert seit
    Apr 2004
    Ort
    Ruhrgebiet
    Beiträge
    1.582
    Hm, ich dachte ich hätte das schon mal geschrieben.
    Also gut, dann jetzt aber:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    
      /**
       * Setzt für alle Spalten die optimale Spaltenbreite.
       * 
       */
      private void sizeColumnsToFit() {
        Rectangle viewRect = yourScrollPane.getViewport().getViewRect();
        Point upperRow = new Point(viewRect.x, viewRect.y);
        Point lowerRow = new Point(viewRect.x, viewRect.y + viewRect.height - 1);
     
        for (int index = 0; index < yourTable.getColumnCount(); index++) {
        TableColumn col = yourTable.getColumnModel().getColumn(index);
        int prefSize = 0;
     
        if (col.getHeaderRenderer() != null)
          prefSize =
            col
              .getHeaderRenderer()
              .getTableCellRendererComponent(null, col.getHeaderValue(), false, false, 0, 0)
              .getPreferredSize()
              .width;
        else
          prefSize =
            yourTable
              .getDefaultRenderer(String.class) // je nachdem
              .getTableCellRendererComponent(
                yourTable,
                col.getHeaderValue(),
                false,
                false,
                0,
                0)
              .getPreferredSize()
              .width;
     
        int fromRow =
          yourTable.rowAtPoint(upperRow) != -1 ? yourTable.rowAtPoint(upperRow) : 0;
        int toRow =
          yourTable.rowAtPoint(lowerRow) != -1
            ? yourTable.rowAtPoint(lowerRow)
            : yourTable.getRowCount();
     
        for (int rowIndex = fromRow; rowIndex < toRow; rowIndex++)
          prefSize =
            Math.max(
              prefSize,
              yourTable
                .getCellRenderer(rowIndex, index)
                .getTableCellRendererComponent(
                  yourTable,
                  yourTable.getModel().getValueAt(rowIndex, index),
                  false,
                  false,
                  rowIndex,
                  index)
                .getPreferredSize()
                .width);
     
        col.setPreferredWidth(prefSize);
        col.setWidth(prefSize);
        } // for 0..columnCount
      }

    Musst natürlich yourTable mit Deiner Variablen ersetzen, ebenso yourScrollPane. Dann sollte das funktionieren. Zumindest hatten wir das so im Einsatz...
     

  5. #5
    Serethos Serethos ist offline Mitglied Gold
    Registriert seit
    Nov 2004
    Beiträge
    127
    Servus

    danke für das progi also es sieht jetzt besser aus wie vorher.

    aber irgendwie seh ich dorch dein quellcode absolute ned durch.

    und mir ist eingefahlen es währe doch sinvoll die Table so formatieren das die Überschriftenzeile sich nach dem text der in die zeilen rein kommt angepasst werden kann so wie was du schon mal geposted hast

    http://www.tutorials.de/tutorials157893.html
    Geändert von Serethos (13.04.05 um 16:05 Uhr)
     

  6. #6
    Serethos Serethos ist offline Mitglied Gold
    Registriert seit
    Nov 2004
    Beiträge
    127
    kannst mir vieleicht nochmal weiter helfen versuch gerade dein quellcode zuverstehen hab da ein problem bei
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
     prefSize =
                    Math.max(
                        prefSize,
                        getCellRenderer(rowIndex, index)
                            .getTableCellRendererComponent(
                                this,
                                getValueAt(rowIndex, index),
                                false,
                                false,
                                rowIndex,
                                index)
                            .getPreferredSize()
                            .width);
    hab rausgefunden das die math.max den größeren wert zurückgibt aber da bekomm ich auch immer ne null pointer exception vieleicht kannst ja was damit anfangen

    java.lang.ArrayIndexOutOfBoundsException: 0 >= 0
    at java.util.Vector.elementAt(Unknown Source)
    at javax.swing.table.DefaultTableColumnModel.getColumn(Unknown Source)
    at javax.swing.JTable.getCellRenderer(Unknown Source)
    at gui.Record.Result.sizeColumnOptimal(Result.java:230)
    at gui.Record.Result.sizeColumnsOptimal(Result.java:161)
    at gui.Query$40.actionPerformed(Query.java:1922)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
    .
    .
    .
    .
    .
     

  7. #7
    Registriert seit
    Apr 2004
    Ort
    Ruhrgebiet
    Beiträge
    1.582
    Scheinen Probleme mit dem CellRenderer zu sein. Bau Dir ein paar Debugausgaben ein und sieh selbst nach.
     

Ähnliche Themen

  1. JApplet größe anpassen
    Von zuckerbrini im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 0
    Letzter Beitrag: 28.01.09, 09:50
  2. WMP Größe anpassen
    Von DiDiJo im Forum HTML & XHTML
    Antworten: 5
    Letzter Beitrag: 15.01.09, 16:28
  3. DIV-Größe anpassen
    Von DelphiDell im Forum CSS
    Antworten: 3
    Letzter Beitrag: 30.04.06, 16:07
  4. SWT-Tree - Größe anpassen
    Von lina- im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 3
    Letzter Beitrag: 10.10.05, 16:18
  5. seiten größe anpassen
    Von layla im Forum HTML & XHTML
    Antworten: 15
    Letzter Beitrag: 14.07.04, 22:35