我有一个盒子布局,旁边有一个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>");
将这个添加到面板仍然会在按钮之后打印到同一行,而不是下一个,任何想法?
答案 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