Wie maximiere ich die Wirkung von Box-Klebstoffen? / Wie werden bevorzugte Bauteilgrößen gegenüber anderen priorisiert?

Installieren

Auf der rechten Seite des Bildschirms befindet sich eine Liste von oben nach unten.Auf der linken Seite des Bildschirms befinden sich Manipulatoren für diese Liste.in Manipulator besteht aus zwei Elementen nebeneinandeAls erstes existiert nur ein Manipulator, aber es können weitere erscheinen;iese würden dann untereinander platzier

Hier sind die Elemente der Manipulatoren JComboBoxes:sourceAMask undsourceBMask.

Um sicherzustellen, dass sie nebeneinander erscheinen, habe ich sie dem @ beigefügBox mask_initialPair entlang des @ angeleBoxLayout.X_AXIS. Sie sollten linksbündig erscheinen, daher habe ich die rechte Seite mit einem @ aufgefüllBox.createHorizontalGlue.

Erlaubenmask_initialPair vertikal ungedehnt zu sein, habe ich das im @ eingeschlossBox maskPairs entlang des @ angeleBoxLayout.Y_AXIS und ein @ hinzugefüBox.createVerticalGlue darunter

Um diese vertikale Liste neben die andere zu stellen,targetScroller, Ich habe beide im @ eingeschlossBox maskPage entlang des @ angeleBoxLayout.X_AXIS. Dieses Konstrukt sollte zentriert erscheinen, also habe ich links und rechts mit @ aufgefülBox.createHorizontalGlue.

Meine (idealen) Annahmen:

sourceAMask undsourceBMask sind linksbündig und von minimaler Breite (gemäß größter Länge vonsource[A|B]Package), da der waagerechte Kleber rechts den gesamten @ zugewiesenen Platz einnimmaskPairs.mask_initialPair (und alle weiteren Paare) haben die erforderliche Mindesthöhe (gemäß der aktuell verwendeten Schriftgröße), da der vertikale Klebstoff darunter den gesamten weiteren Platz beansprucht. Der linke und rechte Rand vonmaskPage sind gleich breit.maskPairs undtargetScroller sind gleich breit.

Nur 3 gilt.

4 wird verletzt alsmaskPairs ist viel breiter alstargetScroller, weil (gegen 1) der horizontale Klebstoff inmask_initialPair erhält die gleiche Breite wie die Klebstoffe inmaskPage, als ob zwischen @ eingefümaskPairs undtargetScroller, anstatt als Teil vonmaskPairs.

2 wird verletzt alsmask_initialPair hat die gleiche Höhe wie der Kleber darunter.

Frage

ch verstehe, wie die horizontale Fehlausrichtung passierIch verstehe nicht, warum die sichtbaren Komponenten (in beiden Dimensionen) gedehnt werden, obwohl immer Klebstoff vorhanden ist, um den überschüssigen Platz einzunehmen.

In beiden Fällen:Wie kann ich es repariere?
Ideally ohne alle Klassen zu überschreiben und meinen Code durch seine Größe wieder aufzublasen.

import javax.swing.*;

class Test
{
  public static void main(String[] args)
  {
    String[] sourceAPackage = { "A::entry1", "A::entry2", "A::entry3" };
    String[] sourceBPackage = { "B::entry1", "B::entry2" };
    String[] targetPackage = {};

    JList<String> targetList = new JList<String>(targetPackage);
    JScrollPane targetScroller = new JScrollPane(targetList);

    JComboBox sourceAMask = new JComboBox<String>(sourceAPackage);
    JComboBox sourceBMask = new JComboBox<String>(sourceBPackage);
    sourceAMask.setEditable(true);
    sourceBMask.setEditable(true);

    Box mask_initialPair = new Box(BoxLayout.X_AXIS);
    mask_initialPair.add(sourceAMask);
    mask_initialPair.add(sourceBMask);
    mask_initialPair.add(Box.createHorizontalGlue());

    Box maskPairs = new Box(BoxLayout.Y_AXIS);
    maskPairs.add(mask_initialPair);
    maskPairs.add(Box.createVerticalGlue());

    Box maskPage = new Box(BoxLayout.X_AXIS);
    maskPage.add(Box.createHorizontalGlue());
    maskPage.add(maskPairs);
    maskPage.add(targetScroller);
    maskPage.add(Box.createHorizontalGlue());

    JFrame frame = new JFrame();
    frame.add(maskPage);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
  }
}