2014-03-27 77 views
2

我想使背景为JTextField透明,这样它下面的JLabel仍然可见,但每当输入文本到JTextField中,您都可以看到文本。这是我现在基本上所拥有的。使JTextField背景透明

JTextField背景在下图中设置为黑色。 enter image description here

理论上,如果JTextField的背景是透明的,它应该看起来像这样。 enter image description here

所以,我的问题是如何使JTextField的背景透明?

+0

您是否使用.setOpaque(假); ? – Noob

+0

是的,我确定将它设置为false – RuneRebellion

+0

尝试.setColor(new Color(0,0,0,0)); – Noob

回答

4

这个例子很简单使用setOpaque(false)。标签文本始终可见。我用Java 1.7和1.8测试了它。所以,如果它不适合你,你还做了什么,来改变你的框架?

public class TextField extends javax.swing.JFrame { 
    public TextField() { 
     initComponents(); 
    } 

    // <editor-fold defaultstate="collapsed" desc="Generated Code">       
    private void initComponents() { 

     jLabel1 = new javax.swing.JLabel(); 
     jTextField1 = new javax.swing.JTextField(); 

     setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 
     getContentPane().setLayout(null); 

     jLabel1.setText("Test"); 
     getContentPane().add(jLabel1); 
     jLabel1.setBounds(60, 40, 70, 14); 

     jTextField1.setText("jTextField1"); 
     jTextField1.setOpaque(false); 
     getContentPane().add(jTextField1); 
     jTextField1.setBounds(50, 30, 90, 40); 

     pack(); 
    }// </editor-fold>       

    public static void main(String args[]) { 
     /* Create and display the form */ 
     java.awt.EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       new TextField().setVisible(true); 
      } 
     }); 
    } 

    // Variables declaration - do not modify      
    private javax.swing.JLabel jLabel1; 
    private javax.swing.JTextField jTextField1; 
    // End of variables declaration     
} 
+0

我想通了,初始化框架时它做了这个操作.. javax.swing.UIManager.setLookAndFeel(info.getClassName()); – RuneRebellion

+0

没有setBounds应该是upvoted – mKorbel

+0

为什么没有setBounds?我没有使用任何布局管理器。为什么不把我的组件这样? – wumpz

0

更改外观设置为金属或窗口 它会工作,如果u必须设置透明已经 雨云LAF使得文字区域backgroung可见只要程序运行