图标图像位于所有其他图层的前面

时间:2019-12-10 22:27:58

标签: java eclipse swing eclipse-mars

嘿,我正在尝试将动画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下方的图片中看到的那样(如果在卡片后面)。

当前,这是运行该代码时的样子。

enter image description here

背景中的灰色方块是读卡器后面的GIF动画。

如果我没有加载 ReaderWithCard.png 图像,则会显示该图像,但这对我没有好处,因为我也需要其中的卡。

enter image description here

我从中缺少什么使动画GIF放在卡片/阅读器的顶部?

0 个答案:

没有答案