Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java gridLayout中的拉伸按钮_Java_Swing_Jbutton_Layout Manager_Gridbaglayout - Fatal编程技术网

Java gridLayout中的拉伸按钮

Java gridLayout中的拉伸按钮,java,swing,jbutton,layout-manager,gridbaglayout,Java,Swing,Jbutton,Layout Manager,Gridbaglayout,各位,我对Java有一些问题,我创建了一个有五行一列的面板,我在其中一行添加了按钮,最后我将这个面板添加到了框架中,我收到了一个按钮,它被拉伸到了整个框架,我可以减小按钮的大小吗,我使用了 myButton.setSize(10,10); 但它似乎不起作用,我也使用 frame.pack(); 可能是问题,请提前谢谢您应该避免自己设置尺码。您应该选择一个合适的LayoutManager,为您完成这项工作 (除非明确执行setLayout(null)设置的尺寸将被丢弃,当前布局管理器将为组件分

各位,我对Java有一些问题,我创建了一个有五行一列的面板,我在其中一行添加了按钮,最后我将这个面板添加到了框架中,我收到了一个按钮,它被拉伸到了整个框架,我可以减小按钮的大小吗,我使用了

myButton.setSize(10,10);
但它似乎不起作用,我也使用

frame.pack();

可能是问题,请提前谢谢

您应该避免自己设置尺码。您应该选择一个合适的
LayoutManager
,为您完成这项工作

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

您说您使用的是
GridLayout
。这种布局相当“不灵活”,如果您想享受
GridLayout
的好处,但更具灵活性,可以尝试一下

如果你找不到一个适合你需要的布局管理器,不要害怕写你自己的。(这是五种相对容易实现的方法。)

如果您发布当前应用程序的屏幕截图,并解释您希望它看起来如何,我们将能够进一步帮助您

一些有用的链接


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

您可以调用
setPreferredSize()
setMaximumSize()
和/或
setMinimumSize()
。根据使用中的布局管理器,其中一个或多个请求(因为它们实际上就是这样)将得到满足。当您调用
frame.pack()
时,它将尝试将容器(和子容器)中的所有内容调整为其首选大小


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

当aloobe似乎为您提供了更通用的解决方案时。我认为直接的解决方案是将按钮添加到JPanel,将Layoutmanager设置为类似GridLayout的布局,或者如果您发现另一个更适合您的布局,则设置另一个Layoutmanager


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

您可以发布整个gui创建代码吗?我的术语是“嵌套布局”。我无法想象使用任何一种布局创建一个可行的GUI(甚至不是严重的BodyLayout,哦,对不起-GridBagLayout)。