Java GridBagLayout: Vermeiden von Mittenzentrierung
-
21-09-2019 - |
Frage
In meiner GUI-Anwendung, habe ich mehr JPanels die an verschiedenen Punkten während der Ausführung meines Programms instanziert werden, und bestimmte Maßnahmen werden dazu führen, einer von ihnen in einem Bildlauffenster angezeigt werden:
mViewport.setViewportView(currentPanel);
Das Problem ist, dass meine Platten sind mit GridBagLayouts getan, und das Verhalten, dass selbst zum Zentrum innerhalb des JScrollPane es innerhalb von ist. Dies macht den GUI Blick seltsam.
Wer weiß einen Weg, einen GridBagLayout Panel oben links ausrichten zu zwingen?
Danke!
EDIT
Beachten Sie, dass ich hier über die Ausrichtung der gesamten Platte innerhalb seiner Bildlauffenster bin zu fragen, nicht über die Komponenten innerhalb der Platte.
Lösung 2
fand ich eine Lösung auf meine eigene Frage nach einigen Hantieren:
Gewichte Einstellung scheint in der Lage zu sein, die Ausrichtung der Komponenten innerhalb des JPanel
zu beeinflussen, für die die GridBagLayout
verwendet wurde. Aber es hatte keine Auswirkungen auf die Ausrichtung des JPanel
im JScrollPane
haben.
fand ich eine ziemlich einfache Lösung, die ist nicht setzt die JPanel
direkt innerhalb der JScrollPane
, wie ich mit meinem frühen Code tat:
if (currentPanel != mCurrentPanel)
{
mViewport.setViewportView(currentPanel);
}
... aber stattdessen eine „äußere“ JPanel
innerhalb des JScrollPane
zu setzen, und das auch einen FlowLayout
zu verwenden. Dann, wenn ich auf Schalttafeln will, muss ich die alte entfernen und die Platte in der „äußeren“ Panel.
if (currentPanel != mCurrentPanel)
{
if (mCurrentPanel != null)
{
mOuterPanel.remove(mCurrentPanel);
}
mCurrentPanel = currentPanel;
mOuterPanel.add(mCurrentPanel);
}
Dieser Ansatz funktionierte recht gut, weil es bedeutete, nur ich in einer Klasse zur Wirkung Änderungen hatte, statt jeder der vielen Platten die ich hatte.
Andere Tipps
Sie müssen die Gewichte setzen (im GridBagConstraints
) auf einem oder mehreren der Komponenten in Ihrem Panel. Dies hat den Effekt von „Schieben“ der Komponenten mehr von dem verfügbaren Platz zu nehmen (ohne Gewichte, werden die Komponenten nur zu nehmen, was sie brauchen, und die Platte wird innerhalb des verfügbaren Raumes zentriert werden).
Wenn Sie die Komponenten an der linken oberen Ecke des Bildlauffenster stellen Sie die untere Komponente y Gewicht bis 1,0, und legen Sie die am weitesten rechts stehende Komponente x Gewicht bis 1,0.
ausrichten wollte