大家,我对Java有一些问题我创建了五行一列的面板,我还在其中一行添加了按钮,最后我将此面板添加到框架中,我收到了拉伸到全帧的按钮,可以我减小了按钮的大小,我使用了
myButton.setSize(10,10);
但它似乎不起作用,我也使用
frame.pack();
可能是问题,提前谢谢
大家,我对Java有一些问题我创建了五行一列的面板,我还在其中一行添加了按钮,最后我将此面板添加到框架中,我收到了拉伸到全帧的按钮,可以我减小了按钮的大小,我使用了
myButton.setSize(10,10);
但它似乎不起作用,我也使用
frame.pack();
可能是问题,提前谢谢
您应该避免自己设置尺寸。您应该选择一个适合LayoutManager
您的工作。
(除非您明确执行setLayout(null)
您设置的尺寸,否则当前布局管理器将为组件分配新尺寸。)
你说你正在使用一个GridLayout
. 这种布局相当“不灵活”,如果你想获得GridLayout
更多灵活性的好处,你可以GridBagLayout
试一试。
如果您没有找到适合您需求的布局管理器,请不要害怕自己编写。(这是五种相对容易实现的方法。)
如果您发布当前应用程序的屏幕截图,并说明您希望它的外观,我们将能够为您提供进一步的帮助。
一些有用的链接
当您使用布局管理器(如GridLayout
)时,调用setSize()
通常不起作用,因为布局管理器最终决定如何调整每个组件的大小并将其放置在容器中。
你可以做的是打电话setPreferredSize()
,setMaximumSize()
和/或setMinimumSize()
。根据使用的布局管理器,这些请求中的一个或多个(因为它们确实如此)将得到尊重。当您调用frame.pack()
它时,它将尝试将容器(和子容器)中的所有内容调整为首选大小。
所以,在你的情况下,打电话myButton.setPreferredSize (10, 10);
可能会奏效。但是,如果容器改变大小,它仍然会调整大小。如果您不希望这样,我可以发布其他解决方案。
当 aloobe 似乎为您提供更通用的解决方案时。我想说直接的解决方案是将按钮添加到 JPanel,将 Layoutmanager 设置为 GridLayout 之类的布局,或者另一个 LayoutManager,如果您发现另一个更适合您的话。
并将此面板添加到您的原始面板中,以代替按钮。