如何防止JScrollPane中的组件调整大小?

时间:2015-05-28 03:52:45

标签: java swing jscrollpane

我有一个JPanel,其布局为CardLayout,每张卡片中都有另一张JPanel,其布局BorderLayout内部有JScrollPane。< / p>

JScrollPane jscrollPane = new JScrollPane(filter.getFilterComponent());
JPanel jPanel = new JPanel(new CardLayout());
jPanel.add(jscrollPane);

JPanel container = new JPanel(new BorderLayout());
container.add(jPanel, BorderLayout.CENTER );

filter.getFilterComponent()可以是文本框,复选框列表等等。

问题是它是JTextField时看起来像这样 JTextField

这是不良行为。当我使用FlowLayout时,无论组件有多高,滚动条都不会出现。我认为它是因为它的父容器preferredSize是0

如何防止JScrollPane内的组件重新调整大小并使其尺寸保持原始尺寸?或者还有另一种方法吗?

1 个答案:

答案 0 :(得分:0)

我使用FlowLayout代替BorderLayout

JPanel container = new JPanel(new FlowLayout(FlowLayout.LEFT,0,0));
container.add(jPanel);

并设置JScrollPane

的首选大小
JScrollPane jscrollPane = new JScrollPane(filter.getFilterComponent());
jscrollPane.setPreferredSize(new Dimension(XX,YY));

XXYY是父容器的宽度和高度,因此如果滚动窗格内的内容超出首选大小,它将滚动