2014-03-27 118 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可見只要程序運行