如何为JPanel添加空间,以便JScrollPane不会位于我的组件之上?

时间:2011-05-19 13:09:35

标签: java swing jpanel jscrollpane gui-design

我有一个JScrollPane,当我加载我的应用程序时,该栏位于我的一个按钮之上。我想要做的是在我的按钮侧面添加一些空间,以便滚动条覆盖空间而不是我的按钮。

我尝试过的示例代码:

JPanel eButton = new JPanel(new BorderLayout());
JPanel spaceFiller = new JPanel();
spaceFiller.setSize(30, 10);
eButton.add(editButton, BorderLayout.EAST);
eButton.add(spaceFiller, BorderLayout.WEST);

此代码的问题在于它仍然会覆盖我的按钮,并且不会添加任何空间。确保JScrollPane不与JFrame中的组件重叠的最佳方法是什么?

由于

2 个答案:

答案 0 :(得分:2)

为了确保尊重JPanel的大小,您应该使用setPreferredSize()而不是setSize()。

答案 1 :(得分:1)

在您的示例代码中,您没有反转EAST和WEST吗?不应该是这样的:

eButton.add(editButton, BorderLayout.WEST); 
eButton.add(spaceFiller, BorderLayout.EAST); 

这会更有意义,sicne滚动条将出现在右侧(EAST)。

请注意,您建议的解决方案,即使它可能有效(在交换EAST和WEST之后)看起来更像是黑客而不是真正的解决方案。