Java JScrollPane 和 FlowLayout
Java JScrollPane and FlowLayout
昨天从本站的一位用户那里得到了如此大的帮助后,我决定在这里再问一个问题,希望你们能帮助我。
我想编写一个在 them.They 中具有组件的框架需要在 JPanel 上并且 JPanel 应该在 JScrollPane.
现在,问题是我需要为面板使用 FlowLayout,因为我不知道我的面板中会有多少组件。
如果我在 JScrollPane 中使用 FlowLayout,它不会创建新行,而只是水平移动,看起来在实际应用中超级奇怪。我想要的是,如果 window 结束,就会出现一条新线。
问题是如何解决这个问题。我不能放置 preferredSize,因为垂直 ScrollBar 不会比我放置 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);
}
}
I cant put a preferredSize, because the vertical ScrollBar will not go further than I put the preferredSize
正确,preferredSize() 需要在组件添加到面板时动态计算。 FlowLayout 的默认首选大小计算假定单行组件。
所以解决方案是使用不同的布局管理器。
WrapLayout 扩展 FlowLayout 并覆盖首选尺寸计算以在组件换行到新行时提供首选宽度和高度。
昨天从本站的一位用户那里得到了如此大的帮助后,我决定在这里再问一个问题,希望你们能帮助我。 我想编写一个在 them.They 中具有组件的框架需要在 JPanel 上并且 JPanel 应该在 JScrollPane.
现在,问题是我需要为面板使用 FlowLayout,因为我不知道我的面板中会有多少组件。
如果我在 JScrollPane 中使用 FlowLayout,它不会创建新行,而只是水平移动,看起来在实际应用中超级奇怪。我想要的是,如果 window 结束,就会出现一条新线。
问题是如何解决这个问题。我不能放置 preferredSize,因为垂直 ScrollBar 不会比我放置 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);
}
}
I cant put a preferredSize, because the vertical ScrollBar will not go further than I put the preferredSize
正确,preferredSize() 需要在组件添加到面板时动态计算。 FlowLayout 的默认首选大小计算假定单行组件。
所以解决方案是使用不同的布局管理器。
WrapLayout 扩展 FlowLayout 并覆盖首选尺寸计算以在组件换行到新行时提供首选宽度和高度。