JLayeredPane中的透明JPanel

时间:2012-07-06 23:50:36

标签: java swing transparency jpanel jlayeredpane

我已经看过几个类似的问题,但不幸的是,其中包含的建议对我来说还没有完成。

总体目标:我想要在窗口左上方显示一个主要显示可视化的滑块(此处为“显示”)。滑块应覆盖在可视化的顶部,没有任何背景。

到目前为止,我在JLayeredPane中的可视化上方的图层上有一个包含滑块的JPanel。问题是,尽管调用了setOpaque和/或setBackground(new Color(0,0,0,0)),JPanel的背景(包括滑块)显示为灰色。我正在使用Nimbus LAF。

最初,我使用了绝对布局,它几乎完美地完成了一切,并且代码最少。问题是可视化没有自动调整窗口大小(但如果有一种干净的方法可以使窗口调整可视化,我会对这种方法持开放态度)。

JPanel sliderPane = new JPanel();
sliderPane.setLayout(new BoxLayout(sliderPane, BoxLayout.X_AXIS));
sliderPane.add(zoomSlider);
zoomSlider.setMaximumSize(new Dimension (60, 150));
sliderPane.add(Box.createHorizontalGlue());
sliderPane.setBackground(new Color(0,0,0,0));

JLayeredPane graphPane = new JLayeredPane();
graphPane.setPreferredSize(new Dimension(1000, 800));
graphPane.setLayout(new BoxLayout(graphPane, BoxLayout.Y_AXIS));
graphPane.add(sliderPane, new Integer(1));
graphPane.add(display, new Integer(0));
graphPane.setOpaque(false);

非常感谢!

1 个答案:

答案 0 :(得分:2)

渲染滑块是组件UI委托的责任,通常是BasicSliderUI的子类。如果需要,您可以替换自己的实现,如here所示。

image