我想在AWT Applet上创建一个Swing叠加层。
AWT小程序是外部的,因此我无法更新它以使用Swing组件。我尝试使用# Unit: milliseconds
# expr min lq mean median uq max neval
# data.table 1.005018 1.053370 1.137456 1.112871 1.186228 1.690996 100
# wimpel 1.061052 1.079128 1.218183 1.105037 1.137272 7.390613 100
# wimpel.index 1.043881 1.064818 1.131675 1.085304 1.108502 4.192995 100
JPanel作为JFrame中的内容窗格,并向其添加叠加的JPanel和AWT容器(按此顺序)。
OverlayLayout
我希望看到黑色背景,因为覆盖层是透明的,但它是灰色的(默认)。将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不会导致黑色背景。