Java的Dialog和FileDialog你知道啊
Dialog
Dialog 是Window類的子類,是一個容器類,屬于特殊組件。對話框是可以獨立存在的頂級窗口,因此用法與普通窗口的用法幾乎完全—樣,但是使用對話框需要注意下面兩點∶
- 對話框通常依賴于其他窗口,就是通常需要有一個父窗口;
- 對話框有非模式(
non-modal)和 模式 (modal)兩種,當(dāng)某個模式對話框被打開后,該模式對話框總是位于它的父窗口之上,在模式對話框被關(guān)閉之前,父窗口無法獲得焦點。
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方法設(shè)置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);
//設(shè)置大小可見
frame.pack();
frame.setVisible(true);
}
}注意:
- 你會發(fā)現(xiàn)關(guān)閉不了窗口,沒關(guān)系,只是沒有設(shè)置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("確認(rèn)"));
//把Box容器加到Dialog中
d1.add(vBox);
//通過setBounds方法設(shè)置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("保存文件");
//給這兩個按鈕設(shè)置點擊后的行為,獲取打開或者保存的路徑文件名
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);
//設(shè)置大小,可見
frame.pack();
frame.setVisible(true);
}
}注意:
- 解決亂碼
- 這里的事件監(jiān)聽下一篇博文會講到,不要擔(dān)心哦~
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
基于ThreadLocal 的用法及內(nèi)存泄露(內(nèi)存溢出)
這篇文章主要介紹了基于ThreadLocal 的用法及內(nèi)存泄露(內(nèi)存溢出),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10
Spring+SpringMVC配置事務(wù)管理無效原因及解決辦法詳解
這篇文章主要介紹了Spring+SpringMVC配置事務(wù)管理無效原因及解決辦法詳解,具有一定借鑒價值,需要的朋友可以參考下2017-12-12
Java將GeoHash轉(zhuǎn)化為對應(yīng)的經(jīng)緯度坐標(biāo)實例代碼
這篇文章主要介紹了Java實現(xiàn)將GeoHash轉(zhuǎn)化為對應(yīng)的經(jīng)緯度坐標(biāo)的相關(guān)資料,需要的朋友可以參考下2016-01-01
基于Java實現(xiàn)Json文件轉(zhuǎn)換為Excel文件
這篇文章主要為大家詳細(xì)介紹了如何利用Java實現(xiàn)Json文件轉(zhuǎn)換為Excel文件,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,需要的可以參考一下2022-12-12
Spring框架JavaMailSender發(fā)送郵件工具類詳解
這篇文章主要為大家詳細(xì)介紹了Spring框架JavaMailSender發(fā)送郵件工具類,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-04-04
使用gRPC微服務(wù)的內(nèi)部通信優(yōu)化
這篇文章主要為大家介紹了微服務(wù)優(yōu)化之使用gRPC做微服務(wù)的內(nèi)部通信,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-03-03
Java中漢字轉(zhuǎn)拼音pinyin4j用法實例分析
這篇文章主要介紹了Java中漢字轉(zhuǎn)拼音pinyin4j用法,結(jié)合實例形式較為詳細(xì)的分析了pinyin4j庫的具體使用技巧,需要的朋友可以參考下2015-12-12

