Java簡單的接口和ActionEven事件練習

這次只是簡單的練習一下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;
}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章