Java 入門指南 - 完成版的 EncryptorGUI

EncryptDemo 與 EncryptorGUIDemo 都是階段性功能的類別 (class) , EncryptDemo 在命令列對 Encrypt 進行測試, EncryptorGUIDemo 則是作為執行 EncryptorGUI 之用




Encrypt 類別完整的範例程式碼,請參考Encrypt.java
EncryptorGUI 類別完整的範例程式碼,請參考EncryptorGUI.java


我們繼續完成 EncryptorGUI 剩下該有的功能.... 先來想想,如果使用者在 Output 標籤 (label) 後面的文字方塊 (textfield) 輸入文字,這會是怎麼樣的光景呢?



或許有人會認為使用者不應該這麼做,因為那是我們放編碼、解碼輸出結果的地方。但是使用者不應該這麼做,並不代表使用者不會這麼做,有時候會不小心唄!因此,如果有使用者在 Output 輸入文字,並且很順暢的按下 Enter 鍵,那我們就在 hint 標籤提供提示訊息



這個事件 (event) 交給 OutputListener 處理
// 輸出文字方塊的事件
class OutputListener implements ActionListener {
    public void actionPerformed(ActionEvent event) {
        JLabel t = (JLabel) GUIComponent.get(2);
        t.setText("This is Output textfield. Why do you do this?");
    }
}


actionPerformed() 為使用者按下 Enter 才會執行的方法,最常用的就是按鈕 (button) 哩!記得, Output 的視窗元件要登記相關的事件處理,不然沒有效果喔!
t = (JTextField) GUIComponent.get(4);
t.addActionListener(new OutputListener());


Clear 按鈕,我們希望效果是清除所有資料



這個事件交給 ClearListener 處理
// 清除文字方塊及暫存資料的事件
class ClearListener implements ActionListener {
    public void actionPerformed(ActionEvent event) {
        userinput = "";
        result = "";
            
        JTextField t2 = (JTextField) GUIComponent.get(3);
        t2.setText("");
        JTextField t3 = (JTextField) GUIComponent.get(4);
        t3.setText("");
            
        JLabel t1 = (JLabel) GUIComponent.get(2);
        t1.setText("This is Clear button. Your input is clear.");
    }
}


很簡單,兩個屬性 (field) userinput 與 result 設定為空字串 (string) ,然後兩個文字方塊也設定為空字串,這樣原本文字方塊中的文字就會被清空了。


Copy 按鈕,我們希望將 result 拷貝到作業系統 (operating system) 的剪貼簿



這樣就可以在其他軟體中貼上 result 的字串



這個事件交給 ClearListener 處理
// 將輸出結果拷貝到作業系統的剪貼簿
class CopyListener implements ActionListener {
    public void actionPerformed(ActionEvent event) {
        JTextField t2 = (JTextField) GUIComponent.get(4);
        t2.selectAll();
        t2.copy();
            
        JLabel t1 = (JLabel) GUIComponent.get(2);
        t1.setText("This is Copy button. Result is copied to clipboard.");
    }
}


這裡,我們是取得 Output 文字方塊的字串
JTextField t2 = (JTextField) GUIComponent.get(4);
t2.selectAll();
t2.copy();


selectAll() 會選取文字方塊中所有的文字, copy() 就會拷貝到作業系統的剪貼簿中。


嗯,我們一路從基礎學習,然後開發 Encrypt ,接著設計利用 Encrypt 的圖形介面軟體 EncryptorGUI ,到這裡告一段落囉!下一步應該是?


中英文術語對照
類別class
標籤label
文字方塊textfield
事件event
按鈕button
屬性field
字串string
作業系統operating system


您可以繼續參考
GUI 篇


相關目錄
回 Java 入門指南
回 Java 教材目錄
回首頁


參考資料
The JavaTM Tutorials: Getting Started
The JavaTM Tutorials: Learning the Java Language
The JavaTM Tutorials: Essential Classes
The Java Language Specification, Third Edition


本文於 2013 年 1 月訂正

沒有留言: