【发布时间】:2018-01-15 19:54:11
【问题描述】:
在昨天得到了本站用户的大力帮助后,我决定在这里再问一个问题,希望大家能帮助我。 我想编写一个包含组件的框架。它们需要在 JPanel 上,并且 JPanel 应该在 JScrollPane 中。
现在,问题是我需要为面板使用 FlowLayout,因为我不知道面板中有多少组件。
如果我在 JScrollPane 中使用 FlowLayout,它不会创建新行,而是水平移动,这在实际应用程序中看起来非常奇怪。我想要的是,如果窗口即将结束,则有一条新行接近。
问题是如何解决这个问题。我不能放一个preferredSize,因为垂直滚动条不会比我放preferredSize 走得更远,所以我真的不知道该怎么做......也许改变布局?我将不胜感激!
问题示例代码:
public class scroller extends JFrame {
Container c;
JPanel p;
JScrollPane pane;
JButton button1;
JButton button2;
JButton button3;
JButton button4;
public scroller() {
c = getContentPane();
c.setLayout(new BorderLayout());
p = new JPanel();
p.setLayout(new FlowLayout());
pane = new JScrollPane(p);
button1 = new JButton("OK1");
p.add(button1);
button2 = new JButton("OK2");
p.add(button2);
button3 = new JButton("OK3");
p.add(button3);
button4 = new JButton("OK4");
p.add(button4);
p.setVisible(true);
c.add(pane,BorderLayout.CENTER);
}
public static void main(String[] args) {
scroller window = new scroller();
window.setSize(200,200);
window.setVisible(true);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
【问题讨论】:
-
是否可以禁用水平滚动并且组件只适合垂直行?
-
我认为另一个答案非常适合我的问题。 WrapLayout() 我认为完美地工作。我也已经尝试过,但是我犯了一些错误,这就是我没有工作的原因。无论如何感谢您的意见!
标签: java swing jscrollpane flowlayout