Я хочу создать оверлей Swing поверх апплета AWT.
Апплет AWT является внешним, поэтому я не могу обновить его для использования компонентов Swing.Я попытался использовать OverlayLayout
JPanel в качестве панели содержимого в моем JFrame, добавив в него свой оверлей JPanel и контейнер AWT (в этом порядке).
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> createAndShowGui());
}
private void createAndShowGui() {
JFrame window = new JFrame("My Window");
window.setDefaultCloseOperation(EXIT_ON_CLOSE);
JPanel content = new JPanel();
content.setLayout(new OverlayLayout(content));
JPanel overlayLayer = new JPanel();
overlayLayer.setLayout(null);
overlayLayer.setOpaque(false);
Container applet = new Container();
applet.setBackground(Color.BLACK);
applet.setPreferredSize(800, 600);
content.add(overlayLayer);
content.add(applet);
window.setContentPane(content);
window.pack();
window.setVisible(true);
}
Я ожидаю увидеть черный фон, поскольку наложение прозрачное, но серое (по умолчанию).Изменение Container
на JPanel
приводит к черному фону.
РЕДАКТИРОВАТЬ: Кажется, что Контейнер не показывает цвет фона, даже если вы добавляете его непосредственно в качестве панели содержимого, но с помощью Panel.Тем не менее, добавление JPanel поверх него не приводит к черному фону.