Besten Swing-Layout für 2-dimensionale Tabelle der Tasten?
Ich versuche zu schaffen, ein JDialog wie den Symbol-dialog in Microsoft Word, die Sie erhalten, indem Sie Symbol... aus der Einfügen Menü. Im Grunde ist es ein n x m (n und m sind erst zur Laufzeit bekannt) - raster mit kleinen Tasten. Ich habe eine erste version der Arbeit schön mit einem GridLayout. Das problem ist, dass beim ändern der dialog (und es ist eine Anforderung, die Sie sollten in der Lage sein, um Ihre Größe), Größe der Tasten verändert. Ich brauche die Größe des buttons in etwa konstant bleiben.
Aber ich möchte die Dimensionen des Gitters mit den Tasten zu ändern. Zum Beispiel, wenn der dialog wird breiter, bleibt aber die gleiche Höhe, die Anzahl der Zeilen verringern sollte, während die Anzahl der Spalten erhöht.
Habe ich gedacht, ein paar Möglichkeiten, dies zu beheben:
- Wenn der dialog geändert wird, erstellen Sie ein neues GridLayout und bevölkern Sie mit den Tasten. Ich werde versuchen, diese und sehen, wie es aussieht, aber es wirkt wie eine plumpe Art und Weise tun.
- Verwenden eine andere Art von layout wie ein FlowLayout. Ich nahm einen Stich an, aber er legte alle n x m Tasten in einer Zeile. Ich nicht wollen, verwenden Sie die horizontale scroll-bars und die Tasten lief den rechten Rand. Wie auch immer, es soll eine 2-dimensionale Tabelle der Tasten.
Was ist der beste Weg zur Lösung dieses layout-problem?
- Wie über die Verwendung von gridlayout für das JPanel halten Sie die Tasten und dann die Verschachtelung dieses JPanel in einem anderen JPanel das FlowLayout verwendet oder einige andere layout, dass nicht die Größe der button-holding JPanel.
- Das ist eigentlich der code geschrieben von MByD. Obwohl er empfiehlt ein BoxLayout, die demo nutzt ein JPanel mit seinem Standard-layout, welches ein FlowLayout.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wrap-Layout könnte das sein, was du suchst.
Erstellen Sie ein Tasten-panel mit GridLayout und eine Feste Größe (könnte zur Laufzeit errechnet werden, natürlich) zu. Die Tasten-panel in einem panel von BoxLayout.
Check-out die BoxLayout Tutorial
Sehr Sehr einfaches Beispiel:
Ich hatte ein ähnliches Problem mit einer einzelnen Spalte Tasten, und festgestellt, dass
MiGLayout
(von Drittanbietern zur Verfügung hier) war einfach und effektiv für diese. Es hat geholfen, beide mit einem raster und mit Taste zum einstellen von Größen, obwohl es dauerte ein oder zwei Tage zu gewöhnen, seine syntax.Aber der Schlüssel ist wirklich die Taste zum einstellen von Größen;
GridLayout
sicher scheint der Weg zu gehen für ein layout, das, auch, ein Gitter. Habe ich noch nicht getestet, aber ich vermute, dass der eingebautesetXSize()
Methoden würde genauso gut funktionieren. DieGridBagLayout
tutorial hat einige Dinge, die Sie tun können, mit der Dimensionierung/Positionierung.FlowLayout wäre der Weg zu gehen, aber haben Sie vielleicht einige Probleme bei der Konfiguration. Was layout-manager wird die parent-Komponente verwenden?