Swing之JTextField中新增圖片
阿新 • • 發佈:2019-02-03
先看一張最終效果圖:
1、繼承來自JPasswordField的文字框
2、繼承來自JTextField的文字框import java.awt.Graphics; import java.awt.Insets; import javax.swing.ImageIcon; import javax.swing.JPasswordField; import javax.swing.JTextField; /** * * @author WZH */ public class JTextFieldPassword extends JPasswordField { private ImageIcon icon; public JTextFieldPassword() { // 獲取當前路徑下的圖片 icon = new ImageIcon(getClass().getResource("./lock.png")); Insets insets = new Insets(0, 20, 0, 0); //設定文字輸入距左邊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); } }
import java.awt.Graphics; import java.awt.Insets; import javax.swing.ImageIcon; import javax.swing.JTextField; /** * * @author WZH */ public class JTextFieldUser extends JTextField { private ImageIcon icon; public JTextFieldUser() { //獲取當前路徑下的圖片 icon = new ImageIcon(getClass().getResource("./user.png")); Insets insets = new Insets(0, 20, 0, 0); //設定文字輸入距左邊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); } }
在文字框中新增圖片的方法主要就在重寫JtextField的paintComponent(Graphics g)方法,先將圖片繪製在文字框中,這裡應該注意的是super.paintComponent(g)方法應該在圖片繪製前呼叫,否則會出現圖片未繪上後被清除的情況。