Как создать оверлей Swing (JPanel) поверх контейнера AWT? - PullRequest
0 голосов
/ 23 декабря 2018

Я хочу создать оверлей 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 поверх него не приводит к черному фону.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...