這次只是簡單的練習一下Java的ActionEven事件,在這個同時,練習Java的接口,這之中只是使用了簡單的Java技術,我也是初學者,歡迎大家和我交流,我們一起進步!
先來一個運行效果圖:
這個小小的練習程序一共有4個源代碼文件:
listenrPractic 源文件下的代碼:
package chapter_9;
public class listenrPractic {
public static void main(String[] args) {
myWindows win = new myWindows();
win.setBounds(100, 100, 460, 360);
//設置窗體的位置,和大小
win.setTitle("處理ActionEven事件");
//設置窗體的標題
}
}
myWindows源文件,這個文件繼承了JFrame:
package chapter_9;
import java.awt.*;
import javax.swing.*;
/*
* 1.先創建一個窗體,窗體內包含 文本框 按鈕 文本域
* 2.創建監聽 需要監聽的是:文本框、按鈕。按下按鈕相應事件開始處理
* 3.設置文本域相應的文本
* */
public class myWindows extends JFrame{
JTextField inputText;
//創建一個 JTextField(文本框)對象
JButton button;
//創建一個JButton(按鈕)對象
JTextArea outText;
//創建一個JTextArea(文本區)對象
myListen myli;
//創建一個監聽
/*注意:構造方法不需要類型修飾符,開始的時候我就犯了這個錯誤,
* 編譯可以通過,但是沒有運行結果。
* 錯誤的寫法:
* void myWindows(){
* init();
* setVisible(true);
* setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
* }
* */
public myWindows(){
//這是構造方法,構造方法沒有類型修飾
init();
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void init(){
//這是自己創建的方法,這是一個實例方法,而類方法是用 static 修飾的
setLayout(new FlowLayout());
//設置佈局,這個窗體的佈局方式設是FlowLayout(流式佈局)的方式
inputText = new JTextField(10);
button = new JButton("確定");
outText = new JTextArea(9,30);
add(inputText);
add(button);
add(new JScrollPane(outText));
myli = new myPListen();
//創建監聽
myli.setJTextField(inputText);
//下面幾個是加入監聽的,具體爲什麼我也沒怎麼理解透
myli.setJTextArea(outText);
inputText.addActionListener(myli);
button.addActionListener(myli);
}
}
myListen源文件,這是自己寫的一個接口,這個接口繼承了ActionListener:
package chapter_9;
import java.awt.event.*;
import javax.swing.*;
public interface myListen extends ActionListener {
//這是一個新接口,這個接口繼承了java 的ActionListener 接口 並且增加了兩個抽象類
public abstract void setJTextField(JTextField input);
public void setJTextArea(JTextArea output);
/*
* 寫不寫 public abstract 的區別就是 : 沒有區別!!
* 接口中只有抽象方法,而所有的抽象方法一定是public的,java允許省略 public abstract
* */
}
myPListen源文件,它重寫了myListen這個接口的三個方法(一個是繼承父接口的actionPerformed,另外兩個是自己寫的):
package chapter_9;
import java.awt.event.*;
import javax.swing.*;
public class myPListen implements myListen{
JTextField input;
JTextArea output;
public void actionPerformed(ActionEvent e) {
String str = input.getText();
output.append(str + " 的長度是:" + str.length() + "\n");
}
public void setJTextField(JTextField input) {
this.input = input;
}
public void setJTextArea(JTextArea output) {
this.output = output;
}
}