1. 程式人生 > 程式設計 >java GUI程式設計之監聽操作例項分析

java GUI程式設計之監聽操作例項分析

本文例項講述了java GUI程式設計之監聽操作。分享給大家供大家參考,具體如下:

當點選Frame中的component元件時,會產生相應的效果,但是相應的其必須進行監聽,確定是那個物件,那種操作,但是如果用cup進行主動的監聽就會消耗大量的資源,所以有了被動的監聽,即對應的事件發生後會自動的執行相關的程式碼。

Button監聽:

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");
 }
}

進行被動監聽是你必須確定是什麼地方什麼型別的componet發出的,我們不可能提供所有的資訊,所以我們初建了一個事件對應一個物件,其都實現了一個介面,當事件發生時,就會呼叫對應的事件方法。即(implements ActionListener),而對應的當實現方法是就要求其提供事件動作。

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,300);
 f1.setVisible(true);
 }
}
class MyMonitor1 implements ActionListener{
 public void actionPerformed(ActionEvent e) {
 System.out.println("aAH you get it " + e.getActionCommand());
 }
}

注:當一個監聽器監聽多個button物件時,我們可以用setActionCommand進行區別,這個相當於是一個屬性亦或是一種標記。

TextField(文字輸入監聽)

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,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,300);
 setBounds(100,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屬於一種輸入文字類的元件,對於Frame類其一種可以直接用Frame構造方法構造,直接產生一個Frame的物件,另一種可以直接繼承Frame這樣就相當於已經存在了一個Frame類,可以直接使用Frame裡面的方法。

注:其上面的setText(null)是相當於在輸入結束按回車鍵的時候,會自動的把輸入框裡的資料清空。如果沒有,其還會繼續存在。

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,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);
 }
}

僅僅是對Text Filed物件添加了一個setEchoChar,表示輸入後的表面顯示。如果沒有,即為輸入什麼就顯示什麼,如果添加了就和輸密碼一樣被覆蓋了。

更多關於java演算法相關內容感興趣的讀者可檢視本站專題:《Java資料結構與演算法教程》、《Java操作DOM節點技巧總結》、《Java檔案與目錄操作技巧彙總》和《Java快取操作技巧彙總》

希望本文所述對大家java程式設計有所幫助。