嘿,我正在尝试将动画GIF(作为图标图像)放置在我拥有的所有其他层的前面。
代码:
private static JPanel container = new JPanel();
private static JLabel inside = new JLabel();
private static JLabel lightFlash = new JLabel();
private static JLabel outside = new JLabel();
private static JWindow myJFrame = new JWindow();
public void showBlinkingLight() {
//Now have the animated green flash start
lightFlash.setIcon(new ImageIcon(getClass().getResource("/lightOnOff.gif")));
lightFlash.setBounds(20, 10, 190, 184);
container.add(lightFlash, BorderLayout.CENTER);
container.revalidate();
container.repaint();
}
public void stopAniCard() {
inside.setIcon(null);
outside.setIcon(null);
outside.revalidate();
outside.repaint();
outside.setIcon(new ImageIcon(getClass().getResource("/ReaderWithCard.png")));
outside.setBounds(0, 0, 190, 390);
outside.revalidate();
outside.repaint();
}
public void showAniCard() {
inside.setIcon(new ImageIcon(getClass().getResource("/batman.gif")));
inside.setBounds(0, 0, 190, 184);
myJFrame.setLayout(new BorderLayout());
myJFrame.add(inside, BorderLayout.CENTER);
myJFrame.setLocationRelativeTo(null);
myJFrame.setOpacity(1f);
myJFrame.setAlwaysOnTop(true);
outsidePIV.setOpaque(false);
setOpaque(myJFrame, false);
myJFrame.pack();
myJFrame.setVisible(true);
container.add(inside, BorderLayout.CENTER);
}
这一切都从 showAniCard()开始,然后我依次调用 stopAniCard()和 showBlinkingLight()。正如您从gif下方的图片中看到的那样(如果在卡片后面)。
当前,这是运行该代码时的样子。
背景中的灰色方块是读卡器后面的GIF动画。
如果我没有加载 ReaderWithCard.png 图像,则会显示该图像,但这对我没有好处,因为我也需要其中的卡。
我从中缺少什么使动画GIF放在卡片/阅读器的顶部?