我正在开发一款名为GalaxyWar的游戏,我正在尝试制作地图选择菜单。我发现一个问题,当我在使用一个具有
以下是我的代码:
setAlignmentX(CENTER_ALIGNMENT)
的JPanel上的BoxLayout.Y_AXIS
时,分配了大小的子组件(JPanel)占用了面板的整个高度(全部在一起),而不是分配的高度!以下是我的代码:
scrollPane = new JScrollPane();
scrollPane.setBounds(160, 11, 452, 307);
add(scrollPane);
mapContainer = new JPanel();
mapContainer.setAlignmentX(CENTER_ALIGNMENT);
mapContainer.setAlignmentY(JPanel.TOP_ALIGNMENT);
mapContainer.setLayout(new BoxLayout(mapContainer, BoxLayout.Y_AXIS));
scrollPane.setViewportView(mapContainer);
JPanel demoPanel = new JPanel();
demoPanel.setLayout(null);
demoPanel.setBackground(Color.YELLOW);
demoPanel.setSize(50, 100);
mapContainer.add(demoPanel);
我已经对此进行了长时间的研究,但迄今为止还没有找到任何解决方案。
scrollPane.setBounds(160, 11, 452, 307);
这是为了实现什么功能?Java GUI 可能需要在多个平台上工作,在不同的屏幕分辨率和使用不同的 PLAF。因此,它们不利于组件的精确放置。为了组织健壮的 GUI 组件,可以使用布局管理器或它们的组合,以及布局填充和边框来创建空白间隔。..(续) - Andrew ThompsondemoPanel.setSize(50, 100);
参见Java Swing中是否应避免使用set(Preferred|Maximum|Minimum)Size方法? (是的。)3) 为了更快地获得更好的帮助,请发布一个MCVE(最小完整可验证示例)。