Ho un pannello derivato da JPanel
. Ho un controllo personalizzato derivato da JLabel
. Sto tentando di centrare questa custom JLabel
sul mio pannello.Centratura di una JLabel in un JPanel
L'unico modo per farlo funzionare è utilizzare il layout null (setLayout(null)
) e quindi calcolare il punto setLocation()
personalizzato di JLabel in modo che sia nel punto giusto.
La custom JLabel
viene spostata fisicamente da un pannello a questo pannello in questa app e credo che la posizione precedentemente impostata in setLocation
stia influenzando le cose. Tuttavia quando lo imposto su (0,0) il componente sale nell'angolo in alto a sinistra.
BorderLayout
non funziona perché quando viene fornito solo 1 componente e inserito in BorderLayout.CENTER
, la sezione centrale si espande per riempire tutto lo spazio.
Un esempio che ho tagliato e incollato da un altro sito utilizzato BoxLayout
e component.setAlignmentX(Component.CENTER_ALIGNMENT)
. Questo non ha funzionato neanche.
Un'altra risposta ha menzionato la funzione getInset()
del pannello (penso sia quello che è stato chiamato), ma si è rivelato un vicolo cieco.
Finora sto lavorando con un pannello con un layout GridBagLayout
e includo un oggetto GridBagConstraints
quando inserisco l'JLabel
personalizzato nel pannello. Questo è inefficiente, però. C'è un modo migliore per centrare il JLabel
nel mio JPanel
?
Prendere in considerazione l'estrazione della domanda dal ranting. –
Oh, e dopo aver usato il metodo GridBagLayout e GridBagConstraints, le cose sembrano OK se minimizzo e poi ripristino la finestra principale. – Shackleford
Il tempo di scrivere questo intero rant è stato sufficiente per digitare in google "Swing che lavora con i gestori di layout", fare clic sul primo colpo dei tutorial swing ufficiali, guardare la guida visiva, decidere BoxLayout sembra promettente e vedere un esempio che fa di più o meno quello che vuoi (contiene due componenti iso uno solo) – Robin