新聞中心
本文實(shí)例講述了java GUI編程之監(jiān)聽(tīng)操作。分享給大家供大家參考,具體如下:
成都創(chuàng)新互聯(lián)公司是一家以成都網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、品牌設(shè)計(jì)、軟件運(yùn)維、成都網(wǎng)站推廣、小程序App開(kāi)發(fā)等移動(dòng)開(kāi)發(fā)為一體互聯(lián)網(wǎng)公司。已累計(jì)為房屋鑒定等眾行業(yè)中小客戶(hù)提供優(yōu)質(zhì)的互聯(lián)網(wǎng)建站和軟件開(kāi)發(fā)服務(wù)。
當(dāng)點(diǎn)擊Frame中的component組件時(shí),會(huì)產(chǎn)生相應(yīng)的效果,但是相應(yīng)的其必須進(jìn)行監(jiān)聽(tīng),確定是那個(gè)對(duì)象,那種操作,但是如果用cup進(jìn)行主動(dòng)的監(jiān)聽(tīng)就會(huì)消耗大量的資源,所以有了被動(dòng)的監(jiān)聽(tīng),即對(duì)應(yīng)的事件發(fā)生后會(huì)自動(dòng)的執(zhí)行相關(guān)的代碼。
Button監(jiān)聽(tīng):
instance 1:
import java.awt.*; import java.awt.event.*; public class MoniterStart { public static void main(String[] args) { Frame f = new Frame(); Button b = new Button("Press "); f.add(b,BorderLayout.CENTER); MyMonitor bh = new MyMonitor(); b.addActionListener(bh); f.setBounds(100, 100, 300, 300); f.setVisible(true); } } class MyMonitor implements ActionListener{ public void actionPerformed(ActionEvent e) { System.out.println("aAH"); } }
進(jìn)行被動(dòng)監(jiān)聽(tīng)是你必須確定是什么地方什么類(lèi)型的componet發(fā)出的,我們不可能提供所有的信息,所以我們初建了一個(gè)事件對(duì)應(yīng)一個(gè)對(duì)象,其都實(shí)現(xiàn)了一個(gè)接口,當(dāng)事件發(fā)生時(shí),就會(huì)調(diào)用對(duì)應(yīng)的事件方法。即(implements ActionListener),而對(duì)應(yīng)的當(dāng)實(shí)現(xiàn)方法是就要求其提供事件動(dòng)作。
instance 2:
import java.awt.*; import java.awt.event.*; public class Monitor2 { public static void main(String[] args) { Frame f1 = new Frame(); Button b1 = new Button("Start "); Button b2 = new Button("Stop "); b1.setActionCommand("The End"); f1.add(b1,BorderLayout.CENTER); f1.add(b2,BorderLayout.SOUTH); MyMonitor1 bh = new MyMonitor1(); b1.addActionListener(bh); b2.addActionListener(bh); f1.setBounds(100, 100, 300, 300); f1.setVisible(true); } } class MyMonitor1 implements ActionListener{ public void actionPerformed(ActionEvent e) { System.out.println("aAH you get it " + e.getActionCommand()); } }
注:當(dāng)一個(gè)監(jiān)聽(tīng)器監(jiān)聽(tīng)多個(gè)button對(duì)象時(shí),我們可以用setActionCommand進(jìn)行區(qū)別,這個(gè)相當(dāng)于是一個(gè)屬性亦或是一種標(biāo)記。
TextField(文本輸入監(jiān)聽(tīng))
instance 3;
import java.awt.*; import java.awt.event.*; public class TfMonitor { public static void main(String[] args) { new TFFrame(); } } class TFFrame{ TFFrame(){ Frame f = new Frame("TF"); TextField tf = new TextField(); f.add(tf); tf.addActionListener(new TFFrameMonitor()); f.setBounds(100, 100, 300, 300); f.setVisible(true); } } /* class TFFrame extends Frame{ TFFrame(){ // Frame f = new Frame("TF"); TextField tf = new TextField(); add(tf); tf.addActionListener(new TFFrameMonitor()); // f.setBounds(100, 100, 300, 300); setBounds(100, 100, 300, 300); setVisible(true); } } */ class TFFrameMonitor implements ActionListener{ public void actionPerformed(ActionEvent e) { TextField text = (TextField)e.getSource(); System.out.println(text.getText()); // text.setText(null); } }
TextField屬于一種輸入文本類(lèi)的組件,對(duì)于Frame類(lèi)其一種可以直接用Frame構(gòu)造方法構(gòu)造,直接產(chǎn)生一個(gè)Frame的對(duì)象,另一種可以直接繼承Frame這樣就相當(dāng)于已經(jīng)存在了一個(gè)Frame類(lèi),可以直接使用Frame里面的方法。
注:其上面的setText(null)是相當(dāng)于在輸入結(jié)束按回車(chē)鍵的時(shí)候,會(huì)自動(dòng)的把輸入框里的數(shù)據(jù)清空。如果沒(méi)有,其還會(huì)繼續(xù)存在。
instance 4:
import java.awt.Frame; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class TFFrame2Monitor { public static void main(String[] args) { new TFFrame2(); } } class TFFrame2 extends Frame{ TFFrame2(){ TextField tf = new TextField(); add(tf); tf.addActionListener(new TFFrameMonitor2()); tf.setEchoChar('*'); setBounds(100, 100, 300, 300); setVisible(true); } } class TFFrameMonitor2 implements ActionListener{ public void actionPerformed(ActionEvent e) { TextField text = (TextField)e.getSource(); System.out.println(text.getText()); text.setText(null); } }
僅僅是對(duì)Text Filed對(duì)象添加了一個(gè)setEchoChar,表示輸入后的表面顯示。如果沒(méi)有,即為輸入什么就顯示什么,如果添加了就和輸密碼一樣被覆蓋了。
更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
當(dāng)前名稱(chēng):javaGUI編程之監(jiān)聽(tīng)操作實(shí)例分析
文章鏈接:http://fisionsoft.com.cn/article/iigegj.html