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.

War es hilfreich?

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top