将标签添加到BoxLayout的下一行

时间:2015-12-01 22:08:47

标签: java swing oop layout

我有一个盒子布局,旁边有一个JLabel和一个按钮,如下:

    JFrame frame = new JFrame();
    JPanel panel = new JPanel();

    panel.setLayout(new BoxLayout(panel,BoxLayout.X_AXIS));
    panel.add(new JLabel("Reference  "));
    panel.add(new JButton("HI"));

    frame.add(panel);
    frame.setSize(500,300);
    frame.setVisible(true);    

这正确地显示了一个名为reference的标签和一个紧挨着它的按钮。但是如果我想在它下面呈现相同的东西(一个新的标签和另一个按钮),我该怎么做?

因为简单地创建另一个面板并模仿我之前所做的事情,似乎无法发挥作用。

JPanel newPanel = new JPanel();
newPanel.setLayout(new BoxLayout(panel,BoxLayout.X_AXIS));

或者在新标签中使用HTML,例如

JLabel s = new JLabel("<html> <br>newLaberl </html>");

将这个添加到面板仍然会在按钮之后打印到同一行,而不是下一个,任何想法?

2 个答案:

答案 0 :(得分:2)

你只需设置JFrame的布局就可以按照你说的方式工作。 我使用您的示例设置框架布局以使用GridLayout

    JFrame frame = new JFrame();
    JPanel panel = new JPanel();
    JPanel panel2 = new JPanel();

    frame.setLayout(new GridLayout(2,1));
    panel.setLayout(new BoxLayout(panel,BoxLayout.X_AXIS));
    panel.add(new JLabel("Reference  "));
    panel.add(new JButton("HI"));

    panel2.setLayout(new BoxLayout(panel2,BoxLayout.X_AXIS));
    panel2.add(new JLabel("Reference2  "));
    panel2.add(new JButton("HI2"));

    frame.add(panel);
    frame.add(panel2);
    frame.setSize(500,300);
    frame.setVisible(true);    

答案 1 :(得分:1)

boxlayout不是这种事情的最佳布局,我建议你去

https://docs.oracle.com/javase/tutorial/uiswing/layout/layoutlist.html

并查看Oracle博客网站上记录的各种布局和教程。

这个可能对您的应用程序有用 https://docs.oracle.com/javase/tutorial/uiswing/layout/gridbag.html