Wie auto-resize-alle Spalten einer JTable die gleiche Größe haben?
Ich bin mit einem JTable in einem Projekt.
Ich will, dass die Tabelle automatisch die Größe aller Spalten auf die gleiche Größe, und zur gleichen Zeit, füllen Sie die Breite der mit JScrollPane.
Ich kann nicht setzen Sie einfach die bevorzugte Breite auf einen festen Wert, weil, wenn der Benutzer die Größe des Rahmens ändern, ich möchte, dass alle Spalten geändert, um die gleiche Größe, aber mit der Einschränkung, dass es muss noch füllen 100% der JScrollPane.
Zum Beispiel, wenn die JScrollPane hat eine Breite von 1000 und ich habe 10 Spalten, ich möchte die Spalten haben jeweils eine Größe von 100.
Wenn die JScrollPane ist dann geschrumpft 500, ich möchte die Spalten, um die Größe auf 50.
Für jetzt, ich habe gerade JTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF)
und hier ist das Ergebnis :
Wie kann ich das einfach erreichen ?
Dank.
- "Wie kann ich das einfach erreichen ?" - Sie können nicht, nicht einfach. Sie gehen zu müssen, erhalten Sie Ihre Hände schmutzig...
- Sie können auch einen Blick Table Column Adjuster
- danke für den link, und für deine Antwort. Ich gehe mit, dass. Und meine Hände nicht so schmutzig :p
Du musst angemeldet sein, um einen Kommentar abzugeben.
Benötigen Sie eine Möglichkeit zum aktualisieren der Spalte Modell, wenn sich die Tabelle ändert die Größe.
Dieses einfache Beispiel verwendet die
invaldiate
- Methode aktualisieren Sie die Spalte Modell. Es legt auch die Spalten nicht resizable.Diese überschreibt auch die Tabellen
getScrollableTracksViewportWidth
Methode, um sicherzustellen, dass die Tabelle automatisch füllt den horizontalen Raum. Dies bedeutet, dass es nie die Anzeige eines horizontalen scroll-Balken, obwohl.Kann es besser sein, auf
doLayout
stattdessen aufinvalidate
sollten, aber Sie haben ein Spiel und sehen, was Ihren Bedürfnissen entsprichtBeispiel
ComponentListener
mich selbst, wäre wahrscheinlich besser, diedoLayout
im AllgemeinenAls beste wie ich sagen kann das Standard-Verhalten (mit JDK7 auf Windows 7) einer JTable ist gleich der Größe jeder Spalte, wenn die Größe der Tabelle geändert wird. Dies scheint zu funktionieren, solange man noch nicht festlegen, eine bevorzugte Breite für die Spalte der Tabelle.
Nach Größe des JTable, können Sie die neue Breite (JTable.getWidth()), wird durch 10 dividiert (so dass die notwendigen Anpassungen, um eine Ganzzahl-Ergebnis), dann legen Sie die Breite jeder Spalte manuell (siehe, wenn diese hilft ).
Habe ich dies in meinem letzten Projekt!