我已经制作了一个JFrame
,在该框架内,有一个面板,我使用GridBagLayout
放置了各种容器。我已将JFrame
的布局设置为BorderLayout
,并在BorderLayout.WEST
中添加了面板。我想在左上角显示该面板的容器。我怎么能这样做?
即使我尝试将面板添加到BorderLayout.NORTH
,它也显示在顶部中心,而是我想要在左上角。
有没有办法做到这一点? I.E.我想要展示的任何其他布局
label1
button1 button2 button3
label2
button1 button2 button3
label 3
button1 button2 button3
答案 0 :(得分:4)
仅使用GridLayout
和BorderLayout
即可轻松完成。
import java.awt.*;
import javax.swing.*;
class LabelButtonLayout {
public static Component getButtonLayout(int num) {
JPanel p = new JPanel(new BorderLayout(3,3));
p.add(new JLabel("Label " + num), BorderLayout.NORTH);
JPanel b = new JPanel(new GridLayout(1,0,25,5));
for (int ii=1; ii<4; ii++) {
b.add(new JButton("Button " + ii));
}
p.add(b, BorderLayout.CENTER);
return p;
}
public static void main(String[] args) {
SwingUtilities.invokeLater( new Runnable() {
public void run() {
JPanel gui = new JPanel(new GridLayout(0,1,3,15));
for (int ii=1; ii<4; ii++) {
gui.add(getButtonLayout(ii));
}
JOptionPane.showMessageDialog(null, gui);
}
});
}
}
答案 1 :(得分:3)
有很多方法可以做到这一点,一个是进一步嵌套JPanels。放置一个JPanel BorderLayout.NORTH,并给它一个BorderLayout。然后将另一个JPanel添加到此边框,即BorderLayout.WEST。
答案 2 :(得分:0)
边框布局不允许您直接向NORTHWEST添加内容。
您可能希望将JFrame
的布局设为GridBagLayout
,以便您拥有所需的灵活性