Полупрозрачная панель над компонентом AWT - PullRequest
2 голосов
/ 05 февраля 2011

У меня есть компонент AWT (сторонняя библиотека), и мне нужно его замаскировать, показывая поверх него полупрозрачную панель (в данном случае это альфа-128). Есть ли способ сделать это? Я посмотрел на класс "TransparentPanel", который использует класс Sun AWTUtilities, но у него есть ограничение, заключающееся в невозможности отображать пиксели с 0

Ответы [ 2 ]

1 голос
/ 17 февраля 2011

Может быть, GlassPane с полупрозрачной краской может решить эту проблему. Вот простой пример:

import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Paint;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class GlassFrame extends JComponent
{
    public GlassFrame()
    {
        super();
    }

    @Override
    protected void paintComponent(Graphics g)
    {
        Graphics2D g2 = (Graphics2D)g.create();

        Paint p = new GradientPaint(
                0, 0, new Color(200,180,180,200), //Select RGB and Alpha values
                getWidth(), 0, new Color(0,0,0,0)
            );
        g2.setPaint(p);
        g2.fillRect(0, 0, getWidth(), getHeight());

        g2.dispose();
    }

    public static void main(String args[])
    {
        JFrame jf = new JFrame("Simple test");
        jf.add(new JPanel());
        GlassFrame g = new GlassFrame();

        jf.setSize(300,300);
        jf.setVisible(true);

        jf.setGlassPane(g);
        g.setVisible(true);
     }
}
0 голосов
/ 23 февраля 2011

Насколько я знаю, вы не можете этого сделать. Что ближе, так это создание снимка экрана компонента AWT, в то время как компонент колебания должен быть показан выше, и в конечном итоге обновление снимка экрана время от времени. Это означает, что нативный компонент в действительности не существует и не может использоваться в режиме захвата экрана (не реагирует на щелчки мыши и ключевые события).

Это то, что один из примеров DJ NativeSwing делает для наложения изображения Swing PNG с альфа-прозрачностью над встроенным веб-браузером. Проверьте демо: http://djproject.sourceforge.net/ns

...