如何将背景图像添加到JTextField?

时间:2014-01-15 00:36:20

标签: java swing background-image jtextfield

我知道如何将背景图像添加到JPanel(创建扩展JPanel的ImagePanel类并重载它的paintComponent()方法),但这个技巧使JTextField无法正常工作:显示图像,但不显示文本。 那么,如何正确地将背景图像添加到JTextField?

2 个答案:

答案 0 :(得分:4)

您需要将文本字段添加到标签中。类似的东西:

JTextField textField = new JTextField(10);
textField.setOpaque( false );
JLabel label = new JLabel( new ImageIcon(...) );
label.setLayout( new BorderLayout() );
label.add( textField );

答案 1 :(得分:1)

在线为您找到这个。

import java.awt.*;  
import javax.swing.*;  
class Testing extends JFrame  
{  
  public Testing()  
  {  
    setDefaultCloseOperation(EXIT_ON_CLOSE);  
    JPanel p = new JPanel(new BorderLayout());  
    JTextField tf = new JTextField(5);  
    JLabel label = new JLabel(new ImageIcon("Test.gif"));  
    label.setOpaque(true);  
    label.setBackground(tf.getBackground());  
    label.setPreferredSize(new Dimension(label.getPreferredSize().width,tf.getPreferredSize().height));  
    p.setBorder(tf.getBorder());  
    tf.setBorder(null);  
    p.add(label,BorderLayout.WEST);  
    p.add(tf,BorderLayout.CENTER);  
    JPanel p1 = new JPanel();  
    p1.add(p);  
    getContentPane().add(p1);  
    pack();  
    setLocationRelativeTo(null);  
  }  
  public static void main(String[] args){new Testing().setVisible(true);}  
}