重写文本框JTextField添加图标
public class HFDoubleTextField extends JTextField {
private static final long serialVersionUID = -2213492965585762616L;
private ImageIcon icon;
public HFDoubleTextField(int columns) {
super(columns);
//获取当前路径下的图片
icon = new ImageIcon(Resources.class.getResource("double.png"));
Insets insets = new Insets(2, 20, 2, 16);
//设置文本输入距左边20
this.setMargin(insets);
}
public HFDoubleTextField() {
super();
//获取当前路径下的图片
icon = new ImageIcon(Resources.class.getResource("double.png"));
Insets insets = new Insets(2, 20, 2, 16);
//设置文本输入距左边20
this.setMargin(insets);
}
@Override
public void paintComponent(Graphics g) {
Insets insets = getInsets();
super.paintComponent(g);
int iconWidth = icon.getIconWidth();
int iconHeight = icon.getIconHeight();
int Height = this.getHeight();
//在文本框中画上之前图片
icon.paintIcon(this, g, (insets.left - iconWidth)/2, (Height - iconHeight) / 2);
}
}
效果:

注意事项:
Insets insets = new Insets(0, 20, 0, 0); 如果你只这样插入内边距的话,
会导致的你的文本框上下比正常文本框要矮,但是要更框。
以为正常文本框的的边距是2,
所有要设成
Insets insets = new Insets(2, 20, 2, -16);

浙公网安备 33010602011771号