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 platzierHier 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);
}
}