带有flowlayout的java scrollpane

出于某种原因,我不能这样做。 它应该很简单。

我有一个带有BorderLayout的JFrame,它包含一个JPanel (SOUTH)和一个(CENTER)JPanel(itemPanel)。

itemPanel应该包含在滚动窗格中。 它的width = x,并且它的所有子节点共享它的长度,所以它基本上就像一个只有1列的表。

出于某种原因,我无法获得滚动窗格来显示滚动条(和滚动)。 在JFrame中:

 setPreferredSize(dimension); setDefaultCloseOperation(EXIT_ON_CLOSE); getContentPane().add("South",controlPanel); JScrollPane scroll = new JScrollPane(itemPanel); scroll.setBorder(null); getContentPane().add("Center",scroll); super.pack(); setVisible(true); 

初始化并向itemPanel添加一些虚拟面板:

 itemPanel = new ItemPanel(); // A JPanel with a flowlayout itemPanel.setPreferredSize(new Dimension(dimension.width,0)); for(int i = 0; i < 20; i++){ JPanel p = new JPanel(); p.setPreferredSize(new Dimension(0,50)); p.setBackground(i%2 == 0 ? Color.GREEN : Color.YELLOW); itemPanel.add(p); } 

如果省略itemPanel.setPreferredSize(new Dimension(dimension.width,0)); 滚动窗格显示水平滚动条,但由于flowlayout没有要跟随的宽度,因此它只显示一行中的组件。

WrapLayout可能就是你要找的东西。