Java 7에 window translucency functionality 버그가있는 것 같습니다 (Java 6에도 문제가 있다고 생각됩니다). 반투명 창을 열고 부모 창을 최소화하면 둘 다 예상대로 사라집니다. 그러나 부모 창을 복원하면 반투명 창이 다시 나타나지 않습니다. 그러나 그것은 여전히 존재하며 잘못된 것이없는 것처럼 입력을 소비합니다. 여기 주 창이 최소화 될 때 투명도가있는 JDialog가 사라집니다.
내 SSCCE입니다 :import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class BrokenTranslucentWindow extends JApplet //same problem exists using a JFrame
{
public BrokenTranslucentWindow()
{
JButton b = new JButton("Hello");
b.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
JDialog d = new JDialog(Window.getWindows()[0])
{
@Override
public void paint(Graphics g)
{
g.fillOval(0, 0, getWidth(), getHeight());
}
};
d.setUndecorated(true);
d.setBackground(new Color(0, 0, 0, 0));
d.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
d.setSize(300, 300);
d.setLocationRelativeTo(null);
// d.setModal(true);
d.setVisible(true);
}
});
this.add(b);
}
}
당신은 부모 창을 복원 한 후 반투명 타원형 창이 표시되지 않습니다 것입니다,하지만 당신은 끝났다 때 커서가 손 모양 커서로 변경됩니다 윈도우가 있어야하는 영역.
나는 bug to Oracle을 제출했지만 해결 될 때까지는 더 나은 해결 방법을 사용할 수 있습니다.
내 질문 :이
는 사람이 발생하지 않도록 할 해결 방법에 대한 아이디어가 있습니까?
재미있는 사실 : 반투명 창을 모달로 일어난 경우
- 이 큰 문제가 발생합니다.
- 저는 픽셀 단위의 투명도에 초점을 맞추고 있지만 균일 한 반투명에도 동일하게 적용됩니다.
- 이 문제는 JFrames, 브라우저 안의 애플릿 및 애플릿 뷰어 내의 애플릿과 함께 나타납니다.
감사! 이것은 나에게 많은 어려움을 덜어 줬다. 개인적으로 나는 이렇게했습니다 : public void windowIconified (WindowEvent e) { instance.setBackground (Color.white); } public void windowActivated (WindowEvent e) { instance.setBackground (new Color (0, 0, 0, 0)); } 이제 최소화 된 경우에만 불투명 해지고 다른 응용 프로그램에 포커스가있을 때는 불투명 해집니다. – Frunk