我在使用FlowLayout的JPanel上有一堆按钮.看起来真的很棒.当按钮到达面板的右侧时,它们从一个新行开始,创建一个漂亮的二维网格.
这是代码:
Container cp = getContentPane();
JPanel panel = new JPanel();
panel.setLayout(new FlowLayout());
for (int i = 0; i < 20; i++)
panel.add(new JButton("Button " + i));
cp.add(panel);
但是,我将面板放在只有垂直滚动的滚动窗格中的那一刻:
Container cp = getContentPane();
JPanel panel = new JPanel();
panel.setLayout(new FlowLayout());
for (int i = 0; i < 20; i++)
panel.add(new JButton("Button " + i));
JScrollPane pane = new JScrollPane(
panel,
ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
cp.add(pane);
按钮只显示在一行(我甚至看不到右边的那些).我仍然希望他们包装.这里发生了什么?顺便说一下,我只需要显示垂直滚动条而不显示水平滚动条.我希望按钮在到达右端时换行到新行.
解决方法:
我在这种情况下使用了自定义Flow Layout.只需插入它即可在滚动窗格中包装.