Используйте BorderLayout
1 .
- Добавьте
panel1
к NORTH
- Добавьте
panel2
к CENTER
- Добавьте
panel3
к SOUTH
EG
Растяните свое воображение, что высоты десятьв разы больше.
import java.awt.*;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
class ColoredPanels {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JPanel gui = new JPanel(new BorderLayout(3,3));
gui.setBackground(Color.BLUE);
gui.setBorder(new EmptyBorder(5,5,5,5));
JPanel panel1 = new JPanel();
panel1.setPreferredSize(new Dimension(300,20));
panel1.setBackground(Color.RED);
gui.add(panel1, BorderLayout.NORTH);
JPanel panel2 = new JPanel();
panel2.setPreferredSize(new Dimension(300,10));
panel2.setBackground(Color.ORANGE);
gui.add(panel2, BorderLayout.CENTER);
JPanel panel3 = new JPanel();
panel3.setPreferredSize(new Dimension(300,50));
panel3.setBackground(Color.YELLOW);
gui.add(panel3, BorderLayout.SOUTH);
// a frame would need pack() etc.
JOptionPane.showMessageDialog(null, gui);
}
});
}
}
КСТАТИ
- Использование
BorderLayout
, .. или BoxLayout
, как упомянуто Shakedown. - Панели, как описано, не будут вписываться в раму такого размера.Кадр имеет свои собственные украшения для учета (строка заголовка, меню, границы и т. Д.)
- Пожалуйста, используйте
camelCase
для имен атрибутов.