Java的Dialog和FileDialog你知道啊
Dialog
Dialog 是Window類的子類,是一個容器類,屬于特殊組件。對話框是可以獨立存在的頂級窗口,因此用法與普通窗口的用法幾乎完全—樣,但是使用對話框需要注意下面兩點∶
- 對話框通常依賴于其他窗口,就是通常需要有一個父窗口;
- 對話框有非模式(
non-modal
)和 模式 (modal
)兩種,當某個模式對話框被打開后,該模式對話框總是位于它的父窗口之上,在模式對話框被關閉之前,父窗口無法獲得焦點。
API
牛刀小試01
效果展示
代碼展示
import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class DialogDemo1 { public static void main(String[] args) { Frame frame = new Frame("這里測試Dialog"); //創(chuàng)建對話框Dialog對象,一個模式的,一個非模式的 //主窗口不能操作 Dialog d1 = new Dialog(frame,"模式對話框",true); //主窗口和子窗口都能操作 Dialog d2 = new Dialog(frame,"非模式對話框",false); //通過setBounds方法設置Dialog的位置以及大小 d1.setBounds(20,30,300,200); d1.setBounds(20,30,300,200); //創(chuàng)建兩個按鈕 Button b1 = new Button("打開模式對話框"); Button b2 = new Button("打開非模式對話框"); //需要給這兩個按鈕添加點擊后的行為 b1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { d1.setVisible(true); } }); b2.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { d2.setVisible(true); } }); //把按鈕添加到frame中 frame.add(b1,BorderLayout.NORTH); frame.add(b2); //設置大小可見 frame.pack(); frame.setVisible(true); } }
注意:
- 你會發(fā)現(xiàn)關閉不了窗口,沒關系,只是沒有設置Windows點擊事件,后面的博文會講到哦!
- 模式窗口 true 簡單理解就是只能點彈出來的那個~
- 非模式窗口 false 就是所有界面都能點~
- 亂碼問題(戳我查看)
牛刀小試02
效果展示
代碼展示
public class DialogDemo2 { public static void main(String[] args) { Frame frame = new Frame("這里測試Dialog"); //創(chuàng)建對話框Dialog對象,一個模式的,一個非模式的 Dialog d1 = new Dialog(frame,"模式對話框",true); //創(chuàng)建一個垂直的Box容器,把一個文本框和一個按鈕加入Box容器中 Box vBox = Box.createVerticalBox(); vBox.add(new TextField(20)); vBox.add(new Button("確認")); //把Box容器加到Dialog中 d1.add(vBox); //通過setBounds方法設置Dialog的位置以及大小 d1.setBounds(20,30,300,200); //創(chuàng)建一個按鈕 Button b1 = new Button("打開模式對話框"); //需要給這兩個按鈕添加點擊后的行為 b1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { d1.setVisible(true); } }); //把按鈕添加到frame中 frame.add(b1,BorderLayout.NORTH); frame.pack(); frame.setVisible(true); } }
FileDialog
Dialog類還有一個子類:FileDialog,它代表一個文件對話框,用于打開或者保存文件,需要注意的是FileDialo:無法指定模態(tài)或者非模態(tài),這是因為 FileDialog 依賴于運行平臺的實現(xiàn),如果運行平臺的文件對話框是模態(tài)的那么 FileDialog 也是模態(tài)的;否則就是非模態(tài)的。
API
牛刀小試
效果展示
代碼展示
import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class FileDialogTest { public static void main(String[] args) { Frame frame = new Frame("這里測試FileDialog"); //創(chuàng)建兩個FileDialog對象 FileDialog f1 = new FileDialog(frame,"選擇要打開的文件",FileDialog.LOAD); FileDialog f2 = new FileDialog(frame,"選擇要保存的路徑",FileDialog.SAVE); //創(chuàng)建兩個按鈕 Button b1 = new Button("打開文件"); Button b2 = new Button("保存文件"); //給這兩個按鈕設置點擊后的行為,獲取打開或者保存的路徑文件名 b1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { f1.setVisible(true);//代碼會阻塞到這里 //獲取選擇的路徑和文件 String directory = f1.getDirectory(); String file = f1.getFile(); System.out.println("打開的文件路徑為:"+directory); System.out.println("打開的文件名稱為:"+file); } }); b2.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { f2.setVisible(true);//代碼會阻塞到這里 //獲取選擇的路徑和文件 String directory = f2.getDirectory(); String file = f2.getFile(); System.out.println("保存的文件路徑為:"+directory); System.out.println("保存的文件名稱為:"+file); } }); //把按鈕添加到Frame中 frame.add(b1,BorderLayout.NORTH); frame.add(b2); //設置大小,可見 frame.pack(); frame.setVisible(true); } }
注意:
- 解決亂碼
- 這里的事件監(jiān)聽下一篇博文會講到,不要擔心哦~
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更多內(nèi)容!
相關文章
基于ThreadLocal 的用法及內(nèi)存泄露(內(nèi)存溢出)
這篇文章主要介紹了基于ThreadLocal 的用法及內(nèi)存泄露(內(nèi)存溢出),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10Spring+SpringMVC配置事務管理無效原因及解決辦法詳解
這篇文章主要介紹了Spring+SpringMVC配置事務管理無效原因及解決辦法詳解,具有一定借鑒價值,需要的朋友可以參考下2017-12-12Java將GeoHash轉(zhuǎn)化為對應的經(jīng)緯度坐標實例代碼
這篇文章主要介紹了Java實現(xiàn)將GeoHash轉(zhuǎn)化為對應的經(jīng)緯度坐標的相關資料,需要的朋友可以參考下2016-01-01基于Java實現(xiàn)Json文件轉(zhuǎn)換為Excel文件
這篇文章主要為大家詳細介紹了如何利用Java實現(xiàn)Json文件轉(zhuǎn)換為Excel文件,文中的示例代碼講解詳細,具有一定的借鑒價值,需要的可以參考一下2022-12-12Spring框架JavaMailSender發(fā)送郵件工具類詳解
這篇文章主要為大家詳細介紹了Spring框架JavaMailSender發(fā)送郵件工具類,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-04-04Java中漢字轉(zhuǎn)拼音pinyin4j用法實例分析
這篇文章主要介紹了Java中漢字轉(zhuǎn)拼音pinyin4j用法,結(jié)合實例形式較為詳細的分析了pinyin4j庫的具體使用技巧,需要的朋友可以參考下2015-12-12