Java: прозрачная Windows с непрозрачными компонентами? - PullRequest
4 голосов
/ 30 июля 2010

Я только что встретил утилиты (com.sun.awt.AWTUtilities), чтобы сделать JFrame действительно прозрачным Документация здесь . Это работает очень хорошо. Даже в Linux с эффектами рабочего стола при включенных шатких окнах. Но я хочу также сделать непрозрачный компонент на прозрачном JFrame.

Кто-нибудь знает, если это возможно, то как?

Вот код, который я использовал:

import com.sun.awt.AWTUtilities;

/* "this" is the JFrame */
this.setUndecorated(true);
AWTUtilities.setWindowOpaque(this, true);
AWTUtilities.setWindowOpacity(this, 0.5f);
AWTUtilities.setWindowShape(this, new RoundRectangle2D.Float(0f, 0f, (float) getWidth(), (float) getHeight(), 15f, 15f));

Ответы [ 2 ]

4 голосов
/ 30 июля 2010

IIUC, Полупрозрачные окна применяются ко всему java.awt.Window и его содержимому, но вы можете попробовать подход, показанный ниже и в этом примере .

JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setBackground(new Color(0f, 0f, 0f, 0.1f));
f.setUndecorated(true);
f.add(new JLabel("<html>Testing<br>1, 2, 3</html>"));
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
1 голос
/ 11 августа 2010

То, что вы хотите сделать, это setWindowOpaque до false и нарисовать фон с низким альфа (или 0 альфа, если вы хотите полную прозрачность).Компоненты все еще будут нарисованы непрозрачными.См. эту статью и посмотрите прозрачность на пиксель .

...