我正在制作类似于字幕播放器的东西,可以播放视频。
我想让背景透明,这样文本所在的框就不会干扰它后面播放的电影/电视节目。我尝试了两种方法来做到这一点,每种方法都会导致同样的问题。当下一个句子出现时,文本不会消失。如果背景是一种颜色(例如:Color.red),那么这可以正常工作。一段时间后,我调用 text.setText("next sentence"),但这不适用于透明背景。相关代码如下。text 是一个 JTextField
我应该提到视频不在这个程序中。这个节目只有字幕。
第一种方式:
text.setBackground(new Color(0,0,0,0));
第二种方式:(使用透明图片)
Graphics c = myPicture.getGraphics();
text.paintAll(c);
我像这样更新文本。
Thread.sleep(Graphix.subtitles.get(counter).getStart());
text.setText(Graphix.subtitles.get(counter).getText());
这也使它重叠。
text.setForeground(Color.blue);
text.setBackground(new Color(0,0,0,0));
text.setOpaque(false);
Main的相关代码如下。
final JFrame JFwindow = new JFrame("Subtitles");
JFwindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JFwindow.getContentPane().add(new Subtitles());
JFwindow.setSize(1300, 150);
JFwindow.setUndecorated(true);
JFwindow.setBackground(new Color(0,0,0,0f));
JFwindow.pack();
JFwindow.setVisible(true);