+--------------------------------------------+
| +-------+ +----------+|
| | +---+ | | +-----+ ||
| | | A | | | | B | ||
| | +---+ | | +-----+ ||
| +-------+ +----------+|
+--------------------------------------------+
^
|
|
Center
Background: I have
- a JButton ("A"), size 50x25, within a JPanel (FlowLayout.CENTER)
- a JLabel ("B"), size 100x25, within a JPanel (FlowLayout.RIGHT)
- the two JPanels are in a JPanel
Desired Result: I want
- The JButton "A" to always be centered horizontally,
- The JLabel "B" to always be flush right.
Thing I've tried: These didn't work for me
- BorderLayout is not working for me because JButton "A" is shifted LEFT:
I'd prefer not to put an invisible component WEST to undo the shift
+--------------------------------------------+ | +-------+ +----------+| | | +---+ | | +-----+ || | | | A | | | | B | || | | +---+ | | +-----+ || | +-------+ +----------+| +--------------------------------------------+ ^ ^ | | | | | Center | Shifted Left
GridLayout won't work because I don't want the "A" and "B" to be expanded
Appreciate any suggestions!
p.s.
The JButton/JLabels are each inside of their own JPanels because WITHOUT the Jpanel, BorderLayout.CENTER expands the JButton across the entire width of the major panel (up to the left edge of the JLabel). The JPanels are not needed/critical to the statement of the problem
Conclusion:
- I went with "Hovercraft Full Of Eels" answer posted below. Thanks!
You should nest JPanels and use a combination of layouts. Placing the panels holding the JButtons into another JPanel that uses GridLayout(1, 0) (1 row, variable number of columns) could work, and placing that JPanel into the BorderLayout.NORTH position of a BorderLayout-using JPanel could work.
For example