我有一个 JPanel 包含一堆小图标,还有一个 JLabel 包含一个更大的图标。
首先,我需要澄清一些事情。通过不设置panel.isOpaque
,上述panel
将有一个透明的背景,并会正确地重叠我的 JPanel 和 JLabel 的图标。这是真的?
现在到我的问题。我一直在关注 Oracle 网站上的 LayeredPanes 教程,但我似乎无法正确处理我的情况。
JFrame window = new JFrame();
ImageIcon underIcon;
URL urlUnder = myClass.class.getResource("images/underImage.gif");
underIcon = new ImageIcon(urlUnder);
JLabel labelUnder = new JLabel(underIcon);
ImageIcon panelIcon;
URL urlAbove = myClass.class.getResource("images/aboveImage.gif");
panelIcon = new ImageIcon(urlAbove);
JLabel aboveIcon1 = new JLabel(panelIcon);
JLabel aboveIcon2 = new JLabel(panelIcon);
JPanel panelAbove = new JPanel(new BorderLayout());
panelAbove.setOpaque(false);
panelAbove.add(aboveIcon1, BorderLayout.WEST);
panelAbove.add(aboveIcon2, BorderLayout.EAST);
JLayeredPane layeredPane = new JLayeredPane();
layeredPane.setLayout(new BorderLayout());
layeredPane.add(labelUnder, BorderLayout.CENTER, 1);
layeredPane.add(panelAbove, BorderLayout.CENTER, 2);
layeredPane.setOpaque(true);
window.setContentPane(layeredPane);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.pack();
window.setVisible(true);
我只看到面板的内容。而且我 100% 确定图像在那里getResource
,所以这不是问题。请就如何正确使用分层窗格提出建议。