Java游戏物品栏显示异常问题求助及修复方案分享
问题:Java Swing物品栏显示异常(横向滚动条+按钮尺寸过大)
场景说明
Game类中的makeInventory方法通过为玩家物品栏内的每个物品创建按钮(并绑定监听器)来生成物品栏,过程中会调用GameUI实例的字段(已知该实现不规范,优先以完成功能为主):
public void makeInventory() { ui.listPanel.removeAll(); InventoryHandler iHandler = new InventoryHandler(); for (Item item : player.getInventory()) { JButton inventoryButton = new JButton(item.getName()); inventoryButton.setBackground(Color.black); inventoryButton.setForeground(Color.white); inventoryButton.setFont(ui.normalFont); inventoryButton.setFocusPainted(false); inventoryButton.addActionListener(iHandler); inventoryButton.setActionCommand("item"); ui.listPanel.add(inventoryButton); } ui.listPanel.revalidate(); ui.listPanel.repaint(); }
面板等组件的初始化在GameUI类的createInventoryArea方法中完成,使用JScrollPane避免物品过多时布局混乱:
public void createInventoryArea() { listPanel = new JPanel(); listPanel.setBackground(Color.black); listPanel.setLayout(new GridLayout()); inventoryScroll = new JScrollPane(listPanel); inventoryScroll.setBounds(550, 350, 300, 200); inventoryScroll.setBorder(null); inventoryScroll.setVisible(false); con.add(inventoryScroll); }
当前问题
物品栏显示异常:滚动条呈横向位于底部,且按钮尺寸过大,不确定需要修改哪些部分,寻求更高效的实现建议。
已解决方案
通过以下调整解决了问题:
- 设置
VERTICAL_SCROLLBAR_ALWAYS强制使用垂直滚动条 - 将
listPanel的布局改为BoxLayout - 手动调整按钮尺寸避免错位
内容的提问来源于stack exchange,提问作者Enes
相关产品推荐
相关产品推荐

