我正在编写一个控制教育竞赛的应用程序,并在扩展屏幕上显示问题和媒体,每当我需要显示分数时,按钮点击,创建一个新的JFrame并播放视频使用VLCJ,并在另一个按钮点击,JFrame应该被处理继续比赛..在谷歌搜索并在这里问一个问题后,我想出了这个代码,以便能够在视频上显示JLabel:
mediaPlayerComponent = new EmbeddedMediaPlayerComponent() {
private static final long serialVersionUID = 1882423084923822679L;
@Override
protected Window onGetOverlay() {
final JWindow transparentWindow = new JWindow();
transparentWindow.setOpacity(1.0f);
transparentWindow.setBackground(new Color(1.0f, 1.0f, 1.0f, 0.0f));
transparentWindow.getContentPane().setLayout(null);
int x = height/7;
for (int i = 0 ; i < numberOfTeams ; i++) {
scores[i][0] = new JLabel(scoresArray[i][0]);
scores[i][0].setOpaque(false);
scores[i][0].setBounds(width/2+width/80, x, width/5, height/16);
scores[i][1] = new JLabel(scoresArray[i][1]);
scores[i][1].setOpaque(false);
scores[i][1].setHorizontalAlignment(SwingConstants.RIGHT);
scores[i][1].setBounds(width/2-width/5-width/80 , x, width/5, height/16);
transparentWindow.getContentPane().add(scores[i][0]);
transparentWindow.getContentPane().add(scores[i][1]);
x = x + height/16;
}
return transparentWindow;
}
};
在第一次显示分数时效果非常好,在使用mediaplayer.stop()
和scoresFrame.dispose()
处理分数JFrame后,带有标签的JWindow仍会出现在问题的顶部。如果我想重新显示分数,JWindow根本不会在视频上显示。
问题的一些照片:
处理scoreFrame并返回主框架(显示问题)后那我在这里缺少什么?
任何帮助表示赞赏。 提前致谢。