JScrollPane中的JPanel。需要时无垂直滚动条

时间:2013-05-28 02:19:11

标签: java swing jscrollpane jscrollbar

我在JScrollPane中有一个JPanel。当我向JPane添加内容时,JScrollPane不会显示滚动条。我尝试了repaint()和revalidate(),但它没有帮助。

static void ladowaniePaneli()
    {
    int b;
    for(b=0;b<o;b++)
        {
        bgPanel[b] = new JBackgroundPanel();
        nowyPanel[b] = new JPanel();

        ((FlowLayout)bgPanel[b].getLayout()).setVgap(0);
        nowyPanel[b].setPreferredSize(new Dimension(790,518));
        nowyPanel[b].setOpaque(false);

        vertical[b] = new JScrollPane(nowyPanel[b]);
        vertical[b].setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
        vertical[b].setPreferredSize(new Dimension(789,517));
        vertical[b].setOpaque(false);
        vertical[b].getViewport().setOpaque(false);
        bgPanel[b].add(vertical[b]);           
        }
    }

2 个答案:

答案 0 :(得分:3)

因为限制所包含组件的大小以使其总是比滚动条的视口大得多,所以从未看到滚动条是有道理的:

nowyPanel[b].setPreferredSize(new Dimension(790,518));

解决方案:不要那样做。

答案 1 :(得分:3)

  

如果我不使用setPreferredSize方法组件不会扭曲到另一行

您可以尝试Wrap Layout

  

如果超过JScrollPane宽度

,则应将它们扭曲到新行

组件单独布局。我想要一组组件进行包装,然后您需要首先将组件添加到单独的面板中。然后使用WrapLayout将面板添加到面板。