Графические глюки Java Swing, связанные с прозрачностью и изображениями

Так что у меня есть эта форма входа и у меня есть "фотография пользователя. "Я"я пытаюсь сделать так, чтобы при наведении курсора мыши на область фотографии появлялась прозрачная метка с цветным фоном (чтобы эффект "выбирая фото). Это выглядит так:

И как только вы уберете с нее мышь, она снова станет "отменен «.

Теперь моя проблема в том, что если сначала навести курсор мыши на кнопку входа в систему, а затем навести курсор мыши на фотографию, "призрачная кнопка входа появляется. Это выглядит так:

Я нене знаю, почему это происходит. Может кто-нибудь помочь? Вот соответствующий код:

package com.stats;

public class Stats extends JFrame implements Serializable {

    private JLabel fader;

    public Stats() {

    try {
        Image image = ImageIO.read(new File(System.getenv("APPDATA")
                                   + "\\Stats\\Renekton_Cleave.png"));
        JLabel labelUserPhoto = new JLabel(new ImageIcon(image));
        fader = new JLabel();
        fader.setBounds(97, 44, 100, 100);
        fader.setOpaque(true);
        fader.setBackground(new Color(0, 0, 0, 0));
        labelUserPhoto.setBounds(97, 44, 100, 100);
        PicHandler ph = new PicHandler();
        contentPane.add(fader);
        contentPane.add(labelUserPhoto);
        fader.addMouseMotionListener(ph);
    } catch(Exception e) {
        e.printStackTrace();
    }
}

private class PicHandler implements MouseMotionListener {
    public void mouseDragged(MouseEvent e) { }
    public void mouseMoved(MouseEvent e) {
        int x = e.getX();
        int y = e.getY();

        System.out.println("x: " + x + ", y: " + y);

        if ((x > 16 && x < 80) && (y > 16 && y < 80)) {
            if (!fader.isOpaque()) {
                fader.setOpaque(true);
                fader.setBackground(new Color(0, 0, 0, 40));
                fader.repaint();
            }
        } else {
            if (fader.isOpaque()) {
                fader.setOpaque(false);
                fader.repaint();
            }
        }
    }
}

Ответы на вопрос(4)

Ваш ответ на вопрос