我将JFrame的背景图像作为JLabel的图标放在JFrame上。但问题是我的textfield和密码字段没有透明。我在两个字段的属性中禁用了opaque。它在netbeans预览中看起来很透明,如https://imgur.com/Yve4E9x
它还生成了代码https://imgur.com/Q1MTkNl
但是当我运行代码实例时,字段也有自己的白色背景。
感谢任何帮助。感谢。
答案 0 :(得分:1)
Swing仅支持完全不透明或完全透明的组件,它不支持半透明(或基于alpha)的颜色。
这意味着您需要更改组件的opaque
属性。
将组件的背景颜色设置为基于alpha的颜色是一种天真的方法,它表明对绘画过程实际如何工作缺乏了解,哪些导致更多“意外”问题,并且在此处不必要地发布了更多问题< / p>
除此之外,JTextField
(可能是JTextComponent
的家族)似乎是规则的例外。
文本组件的UI绘制委托不仅渲染文本,还渲染背景颜色,在某些平台上似乎忽略了opaque
属性。
在这种情况下该怎么办?那么,在这种情况下你必须做到这两点。
jTextField1 = new javax.swing.JTextField();
jTextField1.setOpaque(false);
jTextField1..setBackground(new java.awt.Color(255, 255, 255, 0));
您可以在属性表中找到opaque
属性
答案 1 :(得分:0)
问题是jtextfield的背景颜色和颜色选择器。它重置颜色的透明组件。
解决方案: 不要使用颜色选择器。使用选项&#34;自定义代码&#34;。 然后将颜色设置为
new java.awt.Color(255, 255, 255, 0)
(不透明仍然可以激活)
你的initComponents应该是这样的......
private void initComponents(){
jPanel1 = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); jTextField1 = new javax.swing.JTextField(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setBackground(new java.awt.Color(255, 255, 0)); jPanel1.setBackground(new java.awt.Color(255, 51, 51)); jLabel1.setText("jLabel1"); jTextField1.setBackground(new java.awt.Color(255, 255, 255, 0)); jTextField1.setText("jTextField1"); [...]