swing Java JScrollPane多个组件
我试图在JScrollPane中添加两个图像。第一个图像是背景,第二个图像与第一个图像重叠。当我运行程序时,问题只显示第二个图像
请帮忙
ImageIcon ii = new ImageIcon("mini_map.png");
JLabel label1=new JLabel(ii);
Icon icon = new ImageIcon("Mg.gif");
JLabel label2 = new JLabel(icon);
JScrollPane jsp=new JScrollPane();
jsp.getViewport().add(label1);
jsp.getViewport().add(label2 );
# 1 楼答案
这就是我为你的特殊问题所做的
既然你说你有一个图像作为背景,所以我会覆盖paintComponent(),就像下面的BackgroundPanel一样。 这样你就有了一个只作为背景的面板。您可以向其中添加任何类型的组件,例如带有ImageIcon的JLabel
这样一来,您就有了一个凌驾于另一个之上的效果,并且仍然可以使用布局管理器来控制组件的位置
如果您的问题更复杂,或者您希望通常将组件设置为一个或另一个组件,那么请按照此处的说明执行-->;使用JLayeredPane。请注意,如果您使用JLayeredPane,布局管理器将不会帮助您,因为它不尊重它们。当您使用空管理器时,您将不得不进行类似的操作,即组件的setBounds()
注意:图像是URL,因此运行该示例需要i-net连接
EDIT1:示例显示如何使用JLayeredPane,并为每个层使用布局管理器
注2:滚动窗格设置PreferedSize的唯一原因是,您可以看到滚动条。否则不要使用它,让布局控制滚动窗格
# 2 楼答案
JViewport是一个子容器,不能添加两个组件
为了在任何容器中实现重叠(即在z方向上堆叠组件),您主要依靠自己,内置支持很差。要么必须在LayeredPane(如前所述)中管理它们,要么尝试重叠布局