【问题标题】:can I put 2 JPanels inside a JFrame like this?我可以像这样在 JFrame 中放置 2 个 JPanel 吗?
【发布时间】:2012-12-10 05:52:42
【问题描述】:

这会将两个 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);

【问题讨论】:

  • Window = new JFrame("Window"); 请查看 Java 名称约定。它应该是windowdisplay 并且从大写字母开始
  • 是的,我修正了我只是写得非常快作为一个例子。 ty
  • Java Swing 中组件的定位是使用Layouts 完成的。 Tutorial
  • 谢谢你从那里找到了大部分。我在 BoxLayout 中的顶部面板比它需要的要大得多。但是这个问题得到了回答!

标签: java layout window jframe jpanel


【解决方案1】:

如果您将代码更改为

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 中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-27
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多