gridLayout中的拉伸按钮

时间:2011-01-31 21:22:10

标签: java swing jbutton layout-manager gridbaglayout

大家,我在Java上遇到了一些问题我创建了五行一列的面板,我还在其中一行添加了按钮,最后我将这个面板添加到了框架中,然后我收到了拉伸到满的按钮框架,我可以减小按钮的大小,我用

myButton.setSize(10,10);

但它似乎不起作用,我也使用

frame.pack();

可能是问题,提前谢谢

3 个答案:

答案 0 :(得分:3)

您应该避免自己设置尺寸。您应该选择适合您的LayoutManager

(除非您明确地setLayout(null),否则您设置的尺寸将被丢弃,当前的布局管理器将为组件分配新的尺寸。)

你说你正在使用GridLayout。这种布局相当“不灵活”,如果你想要GridLayout的好处但更灵活,你可以尝试GridBagLayout

如果您没有找到满足您需求的布局管理器,请不要害怕编写自己的布局管理器。 (这是五种相对简单的实施方法。)

如果您发布当前应用程序的屏幕截图,并说明您希望它的外观,我们将能够为您提供进一步的帮助。

一些有用的链接

答案 1 :(得分:1)

当您使用布局管理器(如GridLayout)时,对setSize()的调用通常不起作用,因为布局管理器最终决定如何调整大小并将每个组件放在容器中。

您可以拨打setPreferredSize()setMaximumSize()和/或setMinimumSize()。根据使用中的布局管理器,这些请求中的一个或多个(因为它们确实是它们)将受到尊重。当您致电frame.pack()时,它会尝试将容器(和子容器)中的所有内容调整为其首选大小。

因此,在您的情况下,调用myButton.setPreferredSize (10, 10);可能会有效。但是,如果容器更改大小,它仍将调整大小。如果您不想这样,我可以发布其他解决方案。

答案 2 :(得分:1)

当aloobe似乎有一个更通用的解决方案。我想立即解决方案是将按钮添加到JPanel,将Layoutmanager设置为GridLayout或其他LayoutManager,如果你发现另一个更适合你。

将此面板添加到原始面板,代替按钮。