Domanda

Nella mia applicazione GUI, ho diversi JPanels che vengono istanziati in vari punti durante l'esecuzione del mio programma, e determinate azioni farò uno di loro da visualizzare in un riquadro di scorrimento:

mViewport.setViewportView(currentPanel);

Il problema è che i miei pannelli sono fatte usando griglia Bag layout, e il comportamento di che è quello di centrare sé all'interno della JScrollPane è dentro di. Questo rende le GUI guardano strano.

Qualcuno sa di un modo per forzare un pannello di layout grid bag in alto a sinistra align?

Grazie!


Modifica

Si noti che qui sto chiedendo circa l'allineamento di tutto il pannello nel suo riquadro di scorrimento, non sui componenti all'interno del pannello.

È stato utile?

Soluzione 2

Ho trovato una soluzione alla mia domanda dopo un po 'armeggiare intorno:

pesi Impostazione sembra essere in grado di influenzare l'allineamento dei componenti all'interno del JPanel che è stata fatta la GridBagLayout. Tuttavia, non ha avuto un effetto sul l'allineamento del JPanel all'interno del JScrollPane.

Ho trovato una soluzione piuttosto semplice, che è quello di non mettere il JPanel direttamente all'interno del JScrollPane, come facevo con il mio codice in precedenza:

if (currentPanel != mCurrentPanel)
{
    mViewport.setViewportView(currentPanel);
}

... ma invece di porre JPanel "esterna" all'interno del JScrollPane, e impostare che di utilizzare una FlowLayout. Poi quando voglio cambiare pannelli, rimuovo il vecchio e posizionare il pannello all'interno del pannello "esterno".

if (currentPanel != mCurrentPanel)
{
    if (mCurrentPanel != null)
    {
        mOuterPanel.remove(mCurrentPanel);
    }
    mCurrentPanel = currentPanel;
    mOuterPanel.add(mCurrentPanel);
}

Questo approccio ha funzionato piuttosto bene, perché significava ho avuto solo per effettuare le modifiche in una classe, invece di ciascuno dei molti pannelli che ho avuto.

Altri suggerimenti

È necessario impostare i pesi (in GridBagConstraints) su uno o più dei componenti all'interno del vostro pannello. Questo ha l'effetto di "spingere" i componenti da occupare più dello spazio disponibile (senza pesi, i componenti saranno solo prendere ciò di cui hanno bisogno, e il pannello sarà centrato entro lo spazio disponibile).

Se si voleva per allineare i componenti in alto a sinistra del riquadro di scorrimento, impostare il peso y del componente di fondo a 1,0, e impostare il peso x il più a destra del componente a 1,0.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top