2014-09-25 4 views
1

Я написал медиаплеер с использованием VLCj; И я пытаюсь реплицировать VLC-плеер, так что, когда нажата клавиша пробела, на экране коротко появится слово «Play». Это возможно?Текстовое наложение на JPanel

Как бы я сделал показы этого временного наложения?

+0

Было бы трудно и подвержено ошибкам, так как VLCj использует «холст» в качестве основного вида, смешение компонентов Swing и AWT может быть проблематичным в лучшие времена. Что вы пробовали? – MadProgrammer

+0

Как [это] (http://stackoverflow.com/q/6725618/230513)? – trashgod

+0

Вы используете jvlc или vlcj? Вы можете проверить свой тег. – caprica

ответ

1

Один из способов сделать это с помощью vlcj - использовать «шатер».

Шатер предоставлен библиотечными библиотеками LibVLC, обернутыми vlcj.

Первое:

import static uk.co.caprica.vlcj.player.Marquee.marquee; 

Затем в МЫШЬЮ слушателя:

marquee() 
    .text("Play") 
    .location(x, y) 
    .position(libvlc_marquee_position_e.bottom) 
    .opacity(0.7f) 
    .colour(Color.white) 
    .timeout(5000) 
    .size(20) 
    .apply(mediaPlayer); 

Это "строитель" стиль API, есть еще один API с индивидуальными методами шатре, например:

mediaPlayer.setMarqueeText("Play"); 
mediaPlayer.setMarqueeSize(60); 
mediaPlayer.setMarqueeOpacity(70); 
mediaPlayer.setMarqueeColour(Color.green); 
mediaPlayer.setMarqueeTimeout(3000); 
mediaPlayer.setMarqueeLocation(300, 400); 
mediaPlayer.enableMarquee(true) 

Все это описано в vlcj Javadoc:

http://caprica.github.io/vlcj/javadoc/3.0.0/uk/co/caprica/vlcj/player/Marquee.html http://caprica.github.io/vlcj/javadoc/3.0.0/uk/co/caprica/vlcj/player/MediaPlayer.html

Есть другие способы ...

Вы можете попробовать накладывание AWT Этикетки с абсолютным позиционированием на верхней часть видео, это будет работать, но метка не будет иметь прозрачный фон.

Вы можете использовать так называемый «прямой» медиа-проигрыватель рендеринга (где вы сами визуализируете видео), а затем вы можете нарисовать свою собственную графику поверх видео или использовать Swing JLabel. В этом случае вы можете использовать прозрачность.

Вы можете даже наложить прозрачное верхнее окно поверх своего видеоокна и нарисовать/поместить свою метку в это окно.

Все эти подходы продемонстрированы в различных примерах в источниках тестирования vlcj. Существуют тестовые примеры для шатер, а также легкие и тяжеловесные накладки.

Но использование шатра является самым простым и, следовательно, рекомендуемым способом.

+0

Это большое спасибо. Однако это не работает при использовании полноэкранного проигрывателя (аналогично FullScreenPlayerX, который видел источники тестирования VlcJ). Шатер появляется для рамки и исчезает. – Ofek

+0

Какой метод вы используете? API Builder или другого API? Если вы добавите .enable() в версию API-интерфейса строителя перед .apply(), она должна работать. Я просто протестировал его, и все было в порядке. – caprica