Ich erstellte transparente JDialog, die leider nicht mit zwei Bildschirmen funktioniert. Wenn es auf einen anderen Bildschirm gezogen wird, wird es undurchsichtig. Der Code ist unten, führen Sie es einfach aus und ziehen Sie das Etikett auf einen anderen Bildschirm.transparent JDialog wird undurchsichtig beim Ziehen auf den zweiten Bildschirm (Ubuntu 14.04 mit Cinnamon, Java 1.8.0_74-b02)
public class TransparentFrame{
public static void main(String[] args) {
JDialog dialog = createDialog();
SwingUtilities.invokeLater(() -> dialog.setVisible(true));
}
private static JDialog createDialog() {
JDialog dialog = new JDialog();
JLabel label = new JLabel("drag me to the other screen");
label.addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseDragged(MouseEvent e) {
SwingUtilities.invokeLater(() -> dialog.setLocation(e.getLocationOnScreen()));
}
});
label.setOpaque(false);
dialog.getContentPane().add(label);
dialog.setUndecorated(true);
dialog.getRootPane().setWindowDecorationStyle(JRootPane.NONE);
dialog.setBackground(new Color(0, 0, 0, 0));
dialog.getContentPane().setBackground(new Color(0, 0, 0, 0));
dialog.pack();
return dialog;
}
}
Weiß jemand, wie man es beheben?
Umwelt: Ubuntu 14.04 mit Zimt, Java 1.8.0_74-b02
Läuft auf meine drei Bildschirme Fein (Lauf Java1.7 Compliance, ersetzt lambdas mit neuen Runnable()) – FredK
Haben Sie führen es auf Ubuntu oder andere Linux? –
'dialog.getContentPane(). SetBackground (neue Farbe (0, 0, 0, 0));' ist eine schlechte Idee, stattdessen 'setOpaque' zu verwenden (du musst das' contentPane' auf ein 'JPanel' aufziehen) Erstens) – MadProgrammer