我想标签 “测试!“ 坐在黑盒子后面,并且能够看到后面的背景图像。我该如何实现这一点?
这是我的真实的问题的一个最小示例,我试图将2个框架大小的JPanel分层,以便在我的应用程序上创建一个导航覆盖。
private fun createAndShowGUI() {
defaultCloseOperation = EXIT_ON_CLOSE
contentPane = JLabel(ImageIcon("C:\\...\\bee.jpg"))
layout = FlowLayout()
//
val translucentPanel: JPanel = object: JPanel() {
override fun paintComponent(g: Graphics?) {
super.paintComponent(g)
val graphics = g!!.create() as Graphics2D
graphics.composite = AlphaComposite.SrcOver.derive(0.5f)
graphics.color = background
graphics.fillRect(0, 0, width, height)
graphics.dispose()
}
}
translucentPanel.background = Color(0, 0, 0, 125)
translucentPanel.preferredSize = Dimension(250, 150)
translucentPanel.isOpaque = false
//
val backingPanel = JPanel()
backingPanel.isOpaque = false
backingPanel.layout = OverlayLayout(backingPanel)
backingPanel.add(translucentPanel)
backingPanel.add(Label("Test!"))
//
add(backingPanel)
setSize(600, 400)
isVisible = true
}
字符串
x1c 0d1x的数据
1条答案
按热度按时间ssm49v7z1#
Swing不支持基于Alpha的背景色。Swing组件可以是完全不透明的,也可以是完全透明的。
但是你可以假装
的数据
字符串
您的第一项工作是摆脱
translucentPanel.background = Color(0, 0, 0, 125)
,而使用Color.BLACK
还有,我不得不改变组件的顺序,所以半透明窗格是先添加的,然后是标签,这样可以确保半透明窗格渲染在标签的上方