對話框是為了人機對話過程提供交互模式的工具。應(yīng)用程序通過對話框,或給用戶提供信息,或從用戶獲得信息。對話框是一個臨時窗口,可以在其中放置用于得到用戶輸入的控件。在Swing中,有兩個對話框類,它們是JDialog類和JOptionPane類。JDialog類提供構(gòu)造并管理通用對話框;JOptionPane類給一些常見的對話框提供許多便于使用的選項,例如,簡單的“yes-no”對話框等。
JDialog類
JDialog類作作對話框的基類。對話框與一般窗口不同,對話框依賴其他窗口,當(dāng)它所依賴的窗口消失或最小化時,對話框也將消失;窗口還原時,對話框又會自動恢復(fù)。
對話框分為強制和非強制兩種。強制型對話框不能中斷對話過程,直至對話框結(jié)束,才讓程序響應(yīng)對話框以外的事件。非強制型對話框可以中斷對話過程,去響應(yīng)對話框以外的事件。強制型也稱有模式對話框,非強制對話框也稱非模式對話框。
JDialog對象也是一種容器,因此也可以給JDialog對話框指派布局管理器,對話框的默認布局為BoarderLayout布局。但組件不能直接加到對話框中,對話框也包含一個內(nèi)容面板,應(yīng)當(dāng)把組件加到JDialog對象的內(nèi)容面板中。由于對話框依賴窗口,因此要建立對話框,必須先要創(chuàng)建一個窗口。
JDialog類常用的構(gòu)造方法有3個:
JDialog(),構(gòu)造一個初始化不可見的非強制型對話框。
JDialog(JFramef,String s),構(gòu)造一個初始化不可見的非強制型對話框,參數(shù)f設(shè)置對話框所依賴的窗口,參數(shù)s用于設(shè)置標(biāo)題。通常先聲明一個JDialog類的子類,然后創(chuàng)建這個子類的一個對象,就建立了一個對話框。
JDialog(JFrame f,String s,boolean b),構(gòu)造一個標(biāo)題為s,初始化不可見的對話框。參數(shù)f設(shè)置對話框所依賴的窗口,參數(shù)b決定對話框是否強制或非強制型。
JDialog類的其他常用方法有以下幾個:
getTitle(),獲取對話框的標(biāo)題。
setTitle(String s),設(shè)置對話框的標(biāo)題。
setModal(boolean b),設(shè)置對話框的模式。
setSize(),設(shè)置框的大小。
setVisible(boolean b),顯示或隱藏對話框。
【例 11-16】小應(yīng)用程序聲明一個用戶窗口類和對話框類,用戶窗口有兩個按鈕和兩個文本框,當(dāng)點擊某個按鈕時,對應(yīng)的對話框被激活。在對話框中輸入相應(yīng)信息,按對話框的確定按鈕。確定按鈕的監(jiān)視方法,將對話框中輸入的信息傳送給用戶窗口,并在用戶窗口的相應(yīng)文本框中顯示選擇信息(查看源文件)。
上述例子創(chuàng)建的是強制型對話框,改為非強制型對話框就允許用戶在對話過程中暫停,與程序的其他部分進行交互。這樣,在界面中可以看到部分對話的效果。
將上述例子改為非強制型對話框只要作少量的改動即可。首先是將對話框構(gòu)造方法中的代碼“super(F,s,true);”改為 “super(F,s,false);”。
第二個變化:原來是響應(yīng)確定按鈕事件時,才調(diào)用方法returnName(),將對話框得到的字符串返回給程序,F(xiàn)在當(dāng)文本框輸入選擇字符串結(jié)束后,就應(yīng)該立即調(diào)用該方法。為此,需要對文本框的輸入事件作監(jiān)視,為文本注冊監(jiān)視器:
public void actionPerformed(ActionEvent e){
if(e.getSource()==text){
MyWindow.returnName(text.getText());
}
else if(e.getSource()==done){
MyWindow.returnName(text.getText());
setVisible(false);
dispose();//清除資源
}
}
JOptionPane類
經(jīng)常遇到非常簡單的對話情況,為了簡化常見對話框的編程,JOptionPane類定義了四個簡單對話框類型,參見表11-4。JOptionPane類提供一組靜態(tài)方法,讓用戶選用某種類型的對話框。下面的代碼是選用確認對話框:
int result = JOptionPane.showConfirmDialog(parent,“確實要退出嗎”, “退出確認“,JOptionPane.YES_NO_CANCEL_OPTION);
其中方法名的中間部分文字“Confirm”是創(chuàng)建對話框的類型,文字Confirm指明是選用確認對話框。將文字Confirm改為另外三種類型的某一個,就成為相應(yīng)類型的對話框。上述代碼的四個參數(shù)的意義是:第一個參數(shù)指定這個對話框的父窗口;第二個參數(shù)是對話框顯示的文字;第三個參數(shù)是對話框的標(biāo)題;最后一個參數(shù)指明對話框有三個按鈕,分別為“是(Y)”,“否(N)”,和“撤銷”。方法的返回結(jié)果是用戶響應(yīng)了這個對話框后的結(jié)果,參見表 11-5 給出的可能答案。
輸入對話框以列表或文本框形式請求用戶輸入選擇信息,用戶可以從列表中選擇選項或從文本框中輸入信息。以下是一個從列表中選擇運行項目的輸入對話框的示意代碼:
String result = (String)JOptionPane.showInputDialog(parent,
“請選擇一項運動項目”, “這是運動項目選擇對話框”,
JOptionPane.QUESTION_MESSAGE,null,
new Object[]{“踢足球“,“打籃球”,“跑步”,“跳繩”},“跑步”);
第四個參數(shù)是信息類型,參見11-6,第五個參數(shù)在這里沒有特別的作用,總是用null;第六個參數(shù)定義了一個供選擇的字符串?dāng)?shù)組,第七個參數(shù)是選擇的默認值。對話框還包括“確定”和“撤銷”按鈕。
輸入 | 通過文本框、列表或其他手段輸入,另有“確定”和“撤銷”按鈕 |
確認 | 提出一個問題,待用戶確認,另有“是(Y)”、“否(N)”和“撤銷”按鈕 |
信息 | 顯示一條簡單的信息,另有“確定”和“撤銷”按鈕 |
選項 | 顯示一列供用戶選擇的選項 |
YES_OPTION | 用戶按了“是(Y)”按鈕 |
NO_OPTION | 用戶按了“否(N)”按鈕 |
CANCEL_OPTION | 用戶按了“撤銷”按鈕 |
OK_OPTION | 用戶按了“確定”按鈕 |
CLOSED_OPTION | 用戶沒按任何按鈕,關(guān)閉對話框窗口 |
PLAIN_MESSAGE | 不包括任何圖標(biāo) |
WARNING_MESSAGE | 包括一個警告圖標(biāo) |
QUESTION_MESSAGE | 包括一個問題圖標(biāo) |
INFORMATIN_MESSAGE | 包括一個信息圖標(biāo) |
ERROR_MESSAGE | 包括一個出錯圖標(biāo) |
有時,程序只是簡單地輸出一些信息,并不要求用戶有反饋。這樣的對話框可用以下形式的代碼創(chuàng)建:
JOptionPane.showMessageDialog(parent, “這是一個Java程序”,
“我是輸出信息對話框”,JOptionPane.PLAIN_MESSAGE);
微信搜索"考試吧"了解更多考試資訊、下載備考資料
相關(guān)推薦:
【考試吧整理】計算機等級考試各科目歷年真題北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |