Я создал прозрачный JDialog, который, к сожалению, не работает с двумя экранами. Когда его перетаскивают на другой экран, он становится непрозрачным. Код ниже, просто запустите его и перетащите ярлык на другой экран.прозрачный JDialog становится непрозрачным при перетаскивании на второй экран (ubuntu 14.04 с 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;
}
}
Кто-нибудь знает, как это исправить?
Окружающая среда: Ubuntu 14,04 с корицей, Java 1.8.0_74-b02
прекрасно работает на моих трех экранах (бег соответствие Java1.7, заменить лямбды с новым Runnable()) – FredK
ли вы запустить его на Ubuntu или другой Linux? –
'dialog.getContentPane(). SetBackground (новый цвет (0, 0, 0, 0));' - плохая идея, вместо этого используйте 'setOpaque' (вам нужно будет использовать' contentPane' 'JPanel' first) – MadProgrammer