Necesito mostrar un solo componente dentro de un JPanel
, y quiero mantener ese componente en la esquina inferior derecha en todo momento. Traté de hacerlo con GridBagLayout:¿Cómo poner el componente en la esquina inferior derecha con GridBagLayout?
val infoArea = new TextArea {
text = "Hello!"
border = Swing.EmptyBorder(30)
background = Color.RED
editable = false
}
val p = new JPanel
p.setLayout(new GridBagLayout)
val c = new GridBagConstraints
c.gridx = 0
c.gridy = 0
c.anchor = GridBagConstraints.LAST_LINE_END
p.add(infoArea.peer,c)
val f = new JFrame
f.setContentPane(p)
f.setVisible(true)
Sin embargo, el área de texto está en el centro por alguna razón:
¿qué estoy haciendo mal aquí?
Usted no ha leído el tutorial GridBagLayout aparece por su código (añadiendo solo un componente y sin agregar algunos componentes ficticios para llenar el JPanel, colocando cosas gridx y gridy 0, sin configurar todas las pertinentes GridBagConstraints ...), y no se puede esperar nada de esto complejo para trabajar sin estudiar primero. De todos modos, usaría JPanels anidados usando diseños más simples como BorderLayouts. –
@HovercraftFullOfEels - Esperaba tener solo una celda y el componente que se colocaría en la parte inferior derecha (al establecer la restricción de anclaje). ¿Y qué otras restricciones son pertinentes aquí? – Rogach
weightx, pesado para uno, pero independientemente, si solo está agregando un componente, no se puede hacer con GridBagLayout. Una vez más, anide JPanels cada uno con su propio diseño. De nuevo, BorderLayout funcionaría bien. –