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

How to prevent component inside JScrollPane to resize?

我有一个 JPanel 的布局 CardLayout 并且在每张卡片中还有另一个 JPanel 的布局 BorderLayout 里面有一个 JScrollPane .

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 时它看起来像这样

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

如何防止 JScrollPane 中的组件调整大小并保持其原始尺寸?或者还有其他方法吗?

我用了 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 是父容器的宽度和高度,所以如果滚动窗格内的内容超过首选大小,它将滚动