Как сделать прозрачным фон java.awt.Label? - PullRequest
2 голосов
/ 19 июня 2011

Я делал прозрачный фон с помощью javax.swing.JLabel следующим образом:

lbl.setBackground(new Color(0, 0, 0, 0));.

Но это не работает с java.awt.Label.Есть ли простой способ сделать этикетку прозрачной?

Обновление:

public class SplashBackground extends Panel {

    private static final long serialVersionUID = 1L;

    private Image image = null;

    /**
     * This is the default constructor
     */
    public SplashBackground() {
        super();
        initialize();
    }

    /**
     * This method initializes this
     * 
     */
    private void initialize() {
        image = Toolkit.getDefaultToolkit().createImage(getClass().getResource("/splash/splash.jpg"));
        this.setLayout(null);
    }

    @Override
    public void paint(Graphics g) {
        super.paint(g);
        if(image != null) {
            g.drawImage(image, 0,0,this.getWidth(),this.getHeight(),this);
        }
    }

}

и

lbl= new Label();
lbl.setBackground(new Color(0, 0, 0, 0));
splashBackground = new SplashBackground();
splashBackground.add(appNameLabel, null);

Ответы [ 2 ]

6 голосов
/ 19 июня 2011

Я понимаю, почему вы не хотите загружать Swing, так как он для всплеска.Собственная реализация Sun / Oracle SplashScreen полностью соответствует AWT.

Почему бы просто не использовать этот существующий класс для своей функциональности заставки?


Как упомянуто camickr, см. Как создать заставку для примера.

Splash using SplashScreen

Теперь это , о чем я говорю.


Что касается ярлыков, опустите их.Используйте FontMetrics или (лучше) TextLayout, чтобы определить размер / положение текста, а затем просто закрасьте его непосредственно в Image.

. Пример использования класса TextLayout см. ответ trashgod на 'Java2D Graphics с сглаживанием'.

0 голосов
/ 19 июня 2011

Раньше я делал прозрачный фон с javax.swing.JLabel следующим образом:

lbl.setBackground (новый цвет (0, 0, 0, 0)) ;.

Это ничего не делает. JLabel является прозрачным по умолчанию (т.е. setOpaque (false)). Вы можете прочитать Фон с прозрачностью , чтобы понять, как прозрачность работает с Swing.

Я никогда не использовал Label, но если он работает как JLabel, то я думаю, что вы переопределите метод isOpaque (), чтобы вернуть false.

...