假设我想让 JPanel %20 的不透明度可见?我不是说 setOpaque(绘制或不绘制)或 setVisible(显示或隐藏)…我的意思是让它看穿 JPanel..你知道吗?
这可能吗?
原文由 test 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用颜色的 alpha 属性。
例如:
panel.setBackground(new Color(0,0,0,64));
将创建一个黑色,具有 64 个 alpha(透明度)
结果是:
这是代码
package test;
import javax.swing.*;
import java.awt.Color;
import java.awt.BorderLayout;
public class See {
public static void main( String [] args ){
JFrame frame = new JFrame();
frame.setBackground( Color.orange );
frame.add( new JPanel(){{
add( new JLabel("Center"));
setBackground(new Color(0,0,0,64));
}} , BorderLayout.CENTER );
frame.add( new JLabel("North"), BorderLayout.NORTH);
frame.add( new JLabel("South"), BorderLayout.SOUTH);
frame.pack();
frame.setVisible( true );
}
}
没有它看起来像这样:
setBackground( new Color( 0,0,0 ) ); // or setBackground( Color.black );
原文由 OscarRyz 发布,翻译遵循 CC BY-SA 2.5 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
您需要为 Color 对象设置“alpha”值:
但是,这仍然无法正常工作,因为 Swing 无法正确绘制透明背景,因此您需要进行自定义绘制。基本逻辑是:
查看 Backgrounds With Transparency 以获取有关实际绘画问题的更多信息以及上述代码解决问题的原因。该链接还包含一个自定义的可重用类,可以为您完成上述绘制。