Java-GUI-事件監聽
阿新 • • 發佈:2022-03-24
1、視窗的事件監聽
主要用來關閉視窗
格式:
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
2、按鈕的事件監聽
當按下按鈕時,會觸發一些事件,可監聽一個按鈕或者多個按鈕,可以用匿名內部類寫出或者自己建立一個類來實現,這裡用的是後者方法。
1、當監聽一個按鈕時
重新寫一個類和一個介面。
具體程式碼如下:
class MeActionListner implements ActionListener{ @Override public void actionPerformed(ActionEvent e) { //語句體(實現按下按鈕後所觸發的一些事件) } }
2、當多個按鈕同共用一個監聽時
可以通過設定按鈕上的資訊來對按鈕進行區分,從而實現不同的按鈕而能觸發不同的事件
具體程式碼如下:
//定義兩個按鈕或者多個,以下以兩個為例 Button button1 = new Button("開始"); Button button2 = new Button("結束"); //用setActionCommand()方法來設定每個按鈕中的資訊 button1.setActionCommand("start"); button2.setActionCommand("stop"); //主函式中只需要new一次MeActionListner()即可實現多個按鈕的監聽 MeActionListner meActionListner= new MeActionListner(); button.setActionCommand("start"); button1.setActionCommand("stop"); //在MeActionListner()中實現按鈕的監聽事件 class MeActionListner implements ActionListener{ @Override public void actionPerformed(ActionEvent e) { //用e.getActionCommand()來獲取按鈕資訊,然後用equals("字串")來判斷哪一個按鈕 if(e.getActionCommand().equals("start")) { //語句體1(實現按鈕1的觸發事件) } if(e.getActionCommand().equals("stop")) { //語句體2(實現按鈕2的觸發事件) } //若還有其他按鈕,只需再新增條件語句進行判斷即可 }
}
與按鈕監聽有關的程式碼:
import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class GUI06 { public static void main(String[] args) { Frame frame = new Frame("監聽事件"); Button button = new Button("開始"); Button button1=new Button("結束"); //addActionListener需要一個ActionListener,所以我們需要構造一個,若為介面就寫實現類,若為父類就繼承 MeActionListner meActionListner= new MeActionListner(); button.setActionCommand("start"); button1.setActionCommand("stop"); button.addActionListener(meActionListner); button1.addActionListener(meActionListner); frame.add(button,BorderLayout.EAST); frame.add(button1,BorderLayout.WEST); frame.pack(); frame.setVisible(true); windowClose(frame); } //關閉視窗的事件 private static void windowClose(Frame frame){ frame.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0); } }); }
}
//觸發按鈕事件的介面
class MeActionListner implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("start"))
{
System.out.println("開始");
}
if(e.getActionCommand().equals("stop"))
{
System.out.println("結束");
}
}
}`
3、輸入框TextField的事件監聽
1、寫一個繼承類,繼承frame,運用frame中的屬性,在這個類中,new了一個單行的文字框,並且新增到視窗中,當設定輸入框的監聽事件時,在另一個類中實現。
class Myframe1 extends Frame{
//繼承類需要一個構造器
public Myframe1(){
TextField textField = new TextField();//可寫單行文字
//向視窗中新增文字框
add(textField);
//監聽這個文字框輸入的東西
MyActionListener myActionListener = new MyActionListener();
textField.addActionListener(myActionListener);
//設定視窗的可見性
setVisible(true);
setBounds(400,400,400,400);
//關閉視窗的監聽事件
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
pack();
}
}
2、再寫一個介面,用來實現對輸入框的觸發事件。
在這個類中,需要用e.getSouce()來獲取資源,並且引用文字型別對e.getSouce()返回的物件進行強制轉換成文字語言,然後輸出輸入框中的文字資訊
class MyActionListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
//用e.getSouce()來獲取一些資源,這裡需要用所監聽的事件型別對所獲得的資源進行強轉
TextField field = (TextField) e.getSource();
System.out.println(field.getText());//獲得輸入框中的文字
}
}
3、拓展--設定替換編碼
即將輸入框中輸入的文字進行替換,但是在後臺中顯示的仍然是替換前的文字資訊
只需要在第1步的類中新增如下程式碼即可
textField.setEchoChar('*');//用字元*來替換輸入到文字框中的文字
若想輸入之後清空文字框,則只需要在第2步的介面中加上如下程式碼
field.setText("");
class MyActionListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
//用e.getSouce()來獲取一些資源,這裡需要用所監聽的事件型別對所獲得的資源進行強轉
TextField field = (TextField) e.getSource();
System.out.println(field.getText());//獲得輸入框中的文字
//清空文字框
field.setText("");
}
}