總網頁瀏覽量

2015年10月26日 星期一

[Java] GUI 圖形化界面 Dialog1

GUI Graphical User Interface

用對話框 dialog boxes (dialog) 顯示資料.
通常是用來顯示重要訊息用.

JOptionPane 是一個已經有簡略且完整的 dialog 類別

JOptionPane 是 javax.swing套件中的類別.
javax.swing套件中包含了許多建構 GUI 應用程式的類別.

//Fig.  3.17:Dialog1

import javax.swing.JOptionPane; //import class JOptionPane

public class Dialog1{
    public static void main(String args[]){
        JOptionPane.showMessageDialog(null,"AS");
    } //end main
} // end Dialog1

JOptionPane類別中的showMessageDialog方法是一個(static method),
所以User不用自行呼叫函式,

----------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------

現在分兩部分, 輸入跟輸出分開,
輸入畫面稱為 input  dialog 輸入對話框, 讓User輸入資料.

JOptionPane類別的 showInputDialog() 方法會顯示使用者輸入文字的欄位,
而 showInputDialog() 的引數就是要在對話框中顯示的提示詞,
一般用來告知使用者要輸入的資料.

其中在對話框中 User 所輸入的就是一串字元, 所以不是整數歐 !
然後以字串方式傳回, 並儲存在 name 變數中.
其中如果最後按下的鍵為 取消 Cancel button 則會以 null 回傳.

之後用 String 類別的 format() 靜態方法,
回傳經過格式化的字串, 而非顯示在 cmd 中.

//Fig.  3.17:NameDialog

import javax.swing.JOptionPane;

public class NameDialog{
    public static void main(String args[]){
        String name = JOptionPane.showInputDialog("Name: ");
        System.out.println("name: "+name);
        String message = String.format("Welcome, %s, to me",name);
        System.out.println("message: "+message);
        JOptionPane.showMessageDialog(null,message);
    }
}
----------------------------------------------------------------------------------------------------

在輸入時打入 HW                    顯示畫面 


 

在裡面加了兩行 System.out.,println

name: GGGG
message: Welcome, GGGG, to me

----------------------------------------------------------------------------------------------------

如果把
String message = String.format("Welcome, %s, to me",name);
換成
int message = String.format("Welcome, %s, to me",name);

就會跑出例外出來

NameDialog.java:7: incompatible types
found   : java.lang.String
required: int
                int num = JOptionPane.showInputDialog("num: ");
                                                     ^

Because showInputDialog just return type of string.


所以要利用轉型, 把字串轉型成整數型態,
Integer.parseInt(String s)

parseInt() 方法是一個 String 類別的靜態方法,
其中如果給了一個不是整數的字串,
就會發生例外錯誤.

以下是小小修改的範例:

import javax.swing.JOptionPane;

public class NameDialog{
    public static void main(String args[]){
        String name = JOptionPane.showInputDialog("Name: ");
        System.out.println("name: "+name);
        String old = JOptionPane.showInputDialog("oldnum : ");
        int oldnum = Integer.parseInt(old);
        System.out.println("oldnum: "+oldnum);   
        String message = String.format("Welcome, %s, to me\n You are %d year old",name,oldnum);
        System.out.println("message: "+message);
        JOptionPane.showMessageDialog(null,message);
    }
}

如果 old 不是給整數, parseInt() 會跳出例外訊息.
name: A
Exception in thread "main" java.lang.NumberFormatException: For input string: "A
"
        at java.lang.NumberFormatException.forInputString(NumberFormatException.
java:48)
        at java.lang.Integer.parseInt(Integer.java:449)
        at java.lang.Integer.parseInt(Integer.java:499)
        at NameDialog.main(NameDialog.java:8)


參考Java 程式設計藝術

沒有留言:

張貼留言