開始不知道焦點是啥,其實就是打字的時候,這個一閃一閃的豎線。java
與焦點事件監聽器有關的信息:
事件名稱:FocusEvent。
事件監聽接口: FocusListener。
須要實現它的兩個方法,分別是
**focusGained(FocusEvent arg0)**方法
**focusLost(FocusEvent arg0)**方法
第一個方法在組件捕獲到焦點是會觸發,第二個方法在組件失去焦點時觸發
事件相關方法:addFocusListener() 添加監聽,removeFocusListener() 刪除監聽。web
如今經過一個小程序具體體會焦點監聽器的用法。小程序
分步驟代碼以下:框架
要導入的類:ide
import javax.swing.JFrame; //頂層容器 (框架) import javax.swing.JLabel; //標籤 import javax.swing.JTextField; //文本框,本列爲其添加焦點事件監聽器 import javax.swing.JPanel; //中間容器 (嵌板)最經常使用的面板 import java.awt.event.FocusEvent; //焦點事件 import java.awt.event.FocusListener; //建立監聽類時要實現的接口
建立窗口,面板,文本框,及標籤。svg
JFrame jframe = new JFrame("動做監聽"); //窗口 JPanel jpanel1 = new JPanel(); //面板 JLabel jlabel1 = new JLabel(); //三個標籤,1用於事件觸發顯示內容 JLabel jlabel2 = new JLabel("普通文本框"); //標籤 JLabel jlabel3 = new JLabel("添加了焦點監聽器的文本框"); //標籤 JTextField jtextfield1 = new JTextField("",15); //普通文本框 JTextField jtextfield2 = new JTextField("",15); //要添加焦點監聽器的文本框
下面是重點,編寫實現FocusListener接口的監聽類,我使用第三種方法,使用通常的命名內部類實現。spa
class myFocusListener implements FocusListener { @Override public void focusGained(FocusEvent arg0) { // 獲取焦點時執行此方法 jlabel1.setText("文本框得到焦點,正在輸入內容"); } @Override public void focusLost(FocusEvent arg0) { // 失去焦點時執行此方法 jlabel1.setText("文本框失去焦點,內容輸入完成"); } }
讓文本框jlabel3添加焦點監聽器code
jtextfield2.addFocusListener(new myFocusListener());
最後添加組件的操做xml
jlabel1.setText("文本框暫未觸發事件"); jpanel1.add(jlabel1); //將jlabel1添加到面板,先顯示未觸發狀態 jpanel1.add(jlabel2); //顯示「普通文本框」 jpanel1.add(jtextfield1); //添加普通文本框jtextfield1 jpanel1.add(jlabel3); //顯示「添加了焦點監視器的文本框」 jpanel1.add(jtextfield2); //添加有焦點監視器的文本框jtextfield2 jframe.add(jpanel1); //面板添加入窗口
運行結果:
完整的源代碼:blog
JFrame jframe = new JFrame("動做監聽"); //窗口 jframe.setSize(200, 200); //設置窗口大小 JPanel jpanel1 = new JPanel(); //面板 JLabel jlabel1 = new JLabel(); //三個標籤,1用於事件觸發顯示內容 JLabel jlabel2 = new JLabel("普通文本框"); //標籤 JLabel jlabel3 = new JLabel("添加了焦點監聽器的文本框"); //標籤 JTextField jtextfield1 = new JTextField("",15); //普通文本框 JTextField jtextfield2 = new JTextField("",15); //要添加焦點監聽器的文本框 public class text_FocusListenner { public static void main(String[] args) { JFrame jframe = new JFrame("動做監聽"); //窗口 JPanel jpanel1 = new JPanel(); //面板 JLabel jlabel1 = new JLabel(); //三個標籤,1用於事件觸發顯示內容 JLabel jlabel2 = new JLabel("普通文本框"); //標籤 JLabel jlabel3 = new JLabel("添加了焦點監聽器的文本框"); //標籤 JTextField jtextfield1 = new JTextField("",15); //普通文本框 JTextField jtextfield2 = new JTextField("",15); //要添加焦點監聽器的文本框 class myFocusListener implements FocusListener { @Override public void focusGained(FocusEvent arg0) { // 獲取焦點時執行此方法 jlabel1.setText("文本框得到焦點,正在輸入內容"); } @Override public void focusLost(FocusEvent arg0) { // 失去焦點時執行此方法 jlabel1.setText("文本框失去焦點,內容輸入完成"); } } //關鍵的一句話,添加監聽器 jtextfield2.addFocusListener(new myFocusListener()); jlabel1.setText("文本框還暫時未觸發事件"); jpanel1.add(jlabel1); //將jlabel1添加到面板,先顯示未觸發狀態 jpanel1.add(jlabel2); //顯示「普通文本框」 jpanel1.add(jtextfield1); //添加普通文本框jtextfield1 jpanel1.add(jlabel3); //顯示「添加了焦點監視器的文本框」 jpanel1.add(jtextfield2); //添加有焦點監視器的文本框jtextfield2 jframe.add(jpanel1); //面板添加入窗口 jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//設置關閉時操做 jframe.setVisible(true); //設置可見 } }