使用不同的布局管理器有很多可能的解决方案。我不知道 OverlayLayout,但我喜欢 WindowBuilder Pro(免费):https://developers.google.com/java-dev-tools/wbpro/ 寻求 Swing 设计方面的帮助。
使用它,我为您的问题编写了 SpringLayout 实现(如果没有 GUI 构建器,SpringLayout 似乎很难处理)。
JPanel panel = new JPanel();
SpringLayout sl_panel = new SpringLayout();
panel.setLayout(sl_panel);
JButton button = new JButton("Comments");
sl_panel.putConstraint(SpringLayout.SOUTH, button, 0, SpringLayout.SOUTH, panel);
sl_panel.putConstraint(SpringLayout.EAST, button, 0, SpringLayout.EAST, panel);
panel.add(button);
JScrollPane scrollPane = new JScrollPane();
sl_panel.putConstraint(SpringLayout.NORTH, scrollPane, 5, SpringLayout.NORTH, panel);
sl_panel.putConstraint(SpringLayout.WEST, scrollPane, 3, SpringLayout.WEST, panel);
sl_panel.putConstraint(SpringLayout.SOUTH, scrollPane, 3, SpringLayout.SOUTH, panel);
sl_panel.putConstraint(SpringLayout.EAST, scrollPane, 3, SpringLayout.EAST, panel);
panel.add(scrollPane);
JLabel lblNewLabel = new JLabel();
lblNewLabel.setIcon(new ImageIcon(foo.class.getResource("sSdA3.png")));
scrollPane.setViewportView(lblNewLabel);
这是运行代码的图片:
您可以看到按钮(我的,不是您的图片...)浮动在底部的滚动窗格上方。我们可以调整上面的边距,这样按钮就不会浮在滚动条的顶部,但这只是为了向您展示它在 z 轴上的位置。