0

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

我只是想让 JTextField 只占用按钮上方的 1 列,而不是放在带有所有按钮的列中。

    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);
4

1 回答 1

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);

这应该将 JPanel 添加到另一个之上的 JFrame 1 中。

于 2012-12-10T07:04:57.327 回答