Я делаю что-то похожее на проигрыватель субтитров, который будет просматривать видео.Сделать JPanel фоном прозрачным без перекрытия текста
Я хотел бы сделать фон прозрачным, чтобы ящик, в котором находится текст, не будет мешать воспроизведению фильма/телешоу за ним. Я пробовал два способа сделать это, и каждый из них приводит к одной и той же проблеме. Текст не исчезает при появлении следующего предложения. Если фон является цветом (например: Color.red), то это отлично работает. Через некоторое время я вызываю text.setText («следующее предложение»), но это не работает с прозрачным фоном. Соответствующий код выглядит следующим образом. текст - это 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);
Как поживаете воспроизводить видео? Как вы делаете «JPanel» прозрачным? Вы вызываете 'repaint 'на панели? – MadProgrammer
Обновлено с информацией! – Yesha
' text - это JTextField' - я бы использовал JLabel. Ярлык по умолчанию прозрачен и используется для отображения текста. JTextField используется для редактирования/ввода текст – camickr