Любой метод, например setOpacity, который работает с JWindow.

Мне просто интересно, есть ли какой-нибудь метод, похожий на setOpacity(float);, который работает с JWindow. Я пробовал метод setOpacity, но похоже, что он не работает с JWindows, потому что я получаю следующую ошибку при попытке использовать этот метод

Метод setOpacity(float) из типа Window не виден

Вот код в моем основном методе.

JWindow window = new JWindow();
window.setSize(100.100);
window.setVisible(true);

person user2612619    schedule 17.10.2013    source источник
comment
Посмотрите, как вы работаете с этим кодом. Он использует недекорированную рамку (которая неотличима от JWindow).   -  person Andrew Thompson    schedule 17.10.2013
comment
Я хочу JWindow, потому что он не показывает этот значок на панели при запуске.   -  person user2612619    schedule 18.10.2013


Ответы (1)


Краткий ответ: нет. Но есть еще кое-что, что вы можете сделать.

Начните с изучения Как создавать полупрозрачные и фигурные окна

введите здесь описание изображения

public class TranslucentWindow {

    public static void main(String[] args) {
        new TranslucentWindow();
    }

    public TranslucentWindow() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                JWindow window = new JWindow();
                window.setSize(100, 100);
                window.setBackground(new Color(255, 0, 0, 128));
                window.setLocationRelativeTo(null);
                window.setVisible(true);

            }
        });
    }

}

Обновлено

Подтвержденная работа под Windows 7 и MacOS X, Java 7

введите здесь описание изображения

Обновлено

Попробуйте и проверьте, действительно ли полупрозрачность поддерживается...

GraphicsEnvironment ge
        = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice gd = ge.getDefaultScreenDevice();

boolean isUniformTranslucencySupported
        = gd.isWindowTranslucencySupported(TRANSLUCENT);
boolean isPerPixelTranslucencySupported
        = gd.isWindowTranslucencySupported(PERPIXEL_TRANSLUCENT);
boolean isShapedWindowSupported
        = gd.isWindowTranslucencySupported(PERPIXEL_TRANSPARENT);

System.out.println("Hello");

if (isUniformTranslucencySupported && isPerPixelTranslucencySupported && isShapedWindowSupported) {

    // Build window as normal...

} else {

    if (!isUniformTranslucencySupported) {
        System.err.println("Translucentancy is not support");
    }
    if (!isPerPixelTranslucencySupported) {
        System.err.println("Per Pixel Translucentancy is not support");
    }
    if (!isShapedWindowSupported) {
        System.err.println("Per Pixel Transparenancy is not support");
    }

    System.exit(0);

}
person MadProgrammer    schedule 17.10.2013
comment
При запуске кода он мигает красным, а затем выглядит так. i.imgur.com/EqtwEvd.png - person user2612619; 17.10.2013
comment
@user2612619 user2612619 Какую версию Java используете? - person MadProgrammer; 17.10.2013
comment
7, используя Eclipse IDE в Linux. - person user2612619; 18.10.2013
comment
@user2612619 user2612619 Похоже на ошибку в Linux - person MadProgrammer; 18.10.2013