Gleichmäßige Anodnung von Komponenten im migLayout

PetBe

Mitglied
Hallo Leute,

ich habe begonnen das migLayout zu verwenden (nachdem es mir mehrfach empfohlen wurde u.A. in diesem Forum). Ich hätte ein paar Fragen bezüglich der gleichmäßigen Anordunung und Skalierung von Komponenten im migLayout:

1)Ist es denn möglich zu sagen, dass z.b. 3 Buttons mit einer bestimmten Größe, die man selber festgelegt hat, gleichmäßig über einen bestimmten Bereich in x oder y-Richtung angeordnet sind, sodass die Abstände zwischen den Buttons gleichmäßig sind?

2) Können eingefügte Bilder oder Grafiken so eingefügt werden, dass deren Größe auf der GUI gleichmäßig ist d.h. dass 2 unterschiedlich große Bilder auf die Selbe Größe skaliert werden?

3) Können die Punkte 1) und 2) auch in einer GUI realisiert werden, deren Größe der Benutzer durch das Vergrößern und Verkleinern des Fensters selbst bestimmen kann. Die Abstände zwischen den Komponenten (eventuell auch die Größe der Komponenten) und die Größe der Bilder müsste darauf dynamisch reagieren.

Natürlich können die PUnkte 1) und 2) auch manuell gemacht werden (das mache ich gerade so). Ich wollte dennoch einfach mal fragen, ob es bequemer gehen würde.
 
Kennt sich hier niemand mit diesem migLayout aus? Es wäre toll, wenn jemand etwas dazu sagen könnte (natürlich nur wenn er oder sie sich auskennt🙂).
 
In MigLayout gibt es die sog. size groups. Dadurch kann festgelegt werden, dass verschiedene Komponenten auf dieselbe Mindestgröße gebracht werden. Frei einstellbar ist diese Größe aber nicht. Hier ein Beispiel:
Java:
import javax.swing.*;
import net.miginfocom.swing.MigLayout;

public class MigNestedPanel {
   
    public static void main(String[] args){
        JFrame frame = new JFrame("Nested components");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel panel = new JPanel(new MigLayout("fill","[]","[][grow 50][grow 25][]"));
        panel.add(new JLabel("Highlight:"), "sg label, split, span");
        panel.add(new JTextField(10), "growx");
        panel.add(new JButton("..."));
        panel.add(new JButton("Show next"), "sg label, wrap");
        panel.add(new JScrollPane(new JTextArea()),"split, span, wrap, grow");
        panel.add(new JScrollPane(new JTextArea()),"split, span, wrap, grow");
        panel.add(new JLabel("Volume:"), "sg label, split, span");
        panel.add(new JComboBox(new String[]{"A:\\", "C:\\", "D:\\"}), "sg label");
        panel.add(new JButton("Refresh"), "sg label");
        panel.add(new JLabel("Zoom"), "sg label");
        panel.add(new JSpinner(),"sg label");
        panel.add(new JButton("Export..."), "gap push, sg label");
        panel.add(new JButton("Quit"), "sg label");
        frame.setContentPane(panel);
        frame.pack();
        frame.setVisible(true);
    }
   
}
 

Zurück
Oben