我可以在这样的JFrame中放入2个JPanel吗?

时间:2012-12-10 05:52:43

标签: java layout window jframe jpanel

这会将两个JPanel放在JFrame中还是需要制作某种容器?

我只是想让JTextField只占据按钮上方的一列而不是放在包含所有按钮的列中。

    window = new JFrame("Window");

    displayBox = new JTextField(20);
    display = new JPanel(new GridLayout(0, 1));

    buttons = new JPanel(new GridLayout(0, 3));
    b0 = new JButton("0");
    b1 = new JButton("1");
    //...

    window.getContentPane().add(display);
    display.add(displayBox);

    window.getContentPane().add(buttons);
    buttons.add(b0);
    buttons.add(b1);
    //...

    window.pack();
    window.setSize(300, 400);
    window.setVisible(true);
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

1 个答案:

答案 0 :(得分:0)

如果您将代码更改为

window = new JFrame("Window");
window.setLayout(new BoxLayout(window.getContentPane(), BoxLayout.PAGE_AXIS));
window.add(Box.createVerticalGlue());
window.add(Box.createHorizontalGlue());

displayBox = new JTextField(20);
display = new JPanel();

buttons = new JPanel();
buttons.setLayout(new GridLayout(0, 3));

b0 = new JButton("0");
b1 = new JButton("1");
//...

window.getContentPane().add(display);
display.add(displayBox);

window.getContentPane().add(buttons);
buttons.add(b0);
buttons.add(b1);
//...

window.pack();
window.setSize(300, 400);
window.setVisible(true);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

应该将JPanels添加到另一个的JFrame 1中。