1

何らかの理由で、これが機能しません。本当にシンプルなはずです。

(SOUTH) と (CENTER) JPanel (itemPanel)BorderLayoutを含むJFrame があります。JPanel

itemPanel はスクロールペインにラップする必要があります。その幅は 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));すると水平スクロールバーが表示されますが、フローレイアウトには幅がないため、コンポーネントが 1 行に表示されるだけです。

4

1 に答える 1

7

FlowLayoutは、パネルの推奨サイズを再計算しません。スクロールバーは、コンポーネントの推奨サイズがスクロールペインのサイズよりも大きい場合にのみ表示されます。

WrapLayoutはあなたが探しているものかもしれません。

于 2010-08-28T23:11:21.567 に答える