首页 文章

gridLayout中的拉伸按钮

提问于
浏览
2

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

myButton.setSize(10,10);

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

frame.pack();

可能是问题,提前谢谢

3 回答

  • 3

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

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

    你说你正在使用 GridLayout . 这个布局相当"unflexible",如果你想要 GridLayout 的好处但更灵活,你可以试试GridBagLayout .

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

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

    一些有用的链接

  • 1

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

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

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

  • 1

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

    并将此面板添加到原始面板,而不是按钮 .

相关问题