java在带有BoxLayout的JPanel中设置JButton的大小并没有按预期工作
最近,我开始用Java做UI开发;我以前用WPF做UI开发。 Java的一些做法令人困惑
我试图实现的是设置按钮的最小大小。 以下是简化代码:
public class MainGameView extends JPanel {
public MainGameView(DefaultController controller) {
this.controller = controller;
CreateUI();
}
private void CreateUI() {
MenuPanel = new javax.swing.JPanel();
StartGameBtn = new JButton("Start Game");
// Creating menu
MenuPanel.setLayout(new BoxLayout(MenuPanel, BoxLayout.Y_AXIS));
MenuPanel.setPreferredSize(new Dimension(200, 200));
StartGameBtn.setAlignmentX(Component.LEFT_ALIGNMENT);
StartGameBtn.setMinimumSize(new Dimension(200, 30));
MenuPanel.add(StartGameBtn);
}
}
所以据我所知,如果容器被分配200像素作为其宽度,它应该相应地为按钮分配200像素的宽度。不过,按钮的大小保持不变。我错过什么了吗
# 1 楼答案
BoxLayout不会水平拉伸组件,它将允许组件保持其首选宽度。您应该使用水平拉伸的布局管理器。例如,根据您试图执行的操作,可以使用BorderLayout:
这会将按钮置于顶部,保持其自然的首选高度,并将其水平拉伸以适应菜单面板的宽度,即使调整了大小也是如此。您还可以查看GridLayout(配置为1列),我相信它将允许您在一个垂直列中添加多个组件,所有组件都将拉伸以适应主面板的整个宽度