【发布时间】:2014-07-17 01:31:41
【问题描述】:
我正在开发一款名为 GalaxyWar 的游戏,并且正在尝试制作地图选择菜单。我发现了一个问题,当我在带有setAlignmentX(CENTER_ALIGNMENT) 的JPanel 上使用带有BoxLayout.Y_AXIS 的BoxLayout 时,具有指定大小的子组件(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);
我已经研究了很长时间,但到目前为止找不到任何解决方案。
【问题讨论】:
-
1)
scrollPane.setBounds(160, 11, 452, 307);那应该达到什么目的? Java GUI 可能必须在多个平台、不同的屏幕分辨率和使用不同的 PLAF 上工作。因此,它们不利于组件的精确放置。要为强大的 GUI 组织组件,请改用布局管理器或 combinations of them,以及 white space 的布局填充和边框。 ..(续) -
.. (cont) 2)
demoPanel.setSize(50, 100);See Should I avoid the use of set(Preferred|Maximum|Minimum)Size methods in Java Swing? (Yes.) 3) 为了尽快获得更好的帮助,请发布MCVE(最小完整且可验证的示例)。 -
我的 scrollPane 被放置在另一个具有绝对布局的 JPanel 上,这就是我使用 .setBounds() 方法的原因!
-
“我的 scrollPane 被放置在另一个具有绝对布局的 JPanel 上” 然后它们都需要修复(而不是对齐)。
-
I Researched alot of websites, finding no help,- 所有网站都建议您不要使用空布局。
标签: java swing jpanel alignment boxlayout