Графические глюки 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();
}
}
}
}