Dialog構造方法
* Dialog(Frame owner, String title, boolean modal)
構造一個最初不可見的 Dialog,它帶有指定的所有者 Frame、標題和模式。
備注:Dialog的模式區別在於:
true的話對話框依附於窗體,不取消Dialog不可以操作窗體,
false的話,不取消Dialog可以操作窗體!
package june610;
import java.awt.Button;
import java.awt.Dialog;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
public class FrameDemo4 {
public static void main(String[] args) {
final Frame f = new Frame("我的電腦");
f.setBounds(300, 100, 600, 500);
f.setLayout(new FlowLayout());
Button b = new Button("轉到");
Button okBut = new Button("確定");
final TextField tf = new TextField(60);
final TextArea ta = new TextArea(25, 70);
f.add(tf);
f.add(b);
f.add(ta);
f.setVisible(true);
final Dialog d = new Dialog(f,"提示信息",true);
final Label lab = new Label();//沒有給出內容,用到的時候再給出!
d.add(lab);//label標簽加到Dialog上去!
d.setBounds(400, 200, 240, 150);
d.setLayout(new FlowLayout());
d.add(okBut);
okBut.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e){
d.setVisible(false);
}
});
//只可以對鼠標有作用!
okBut.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
d.setVisible(false);
}
});
d.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
d.setVisible(false);//對話框不顯示
}
});
//窗體上的操作
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
//設置鍵盤監聽器,當輸入enter鍵的時候實現和點擊鼠標同樣的功能!
/*tf.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == 10) {
// buttonAction();
run(tf,ta,f,d,lab);
}
System.out.println(e.getKeyCode());
}
});*/
//和上面被注釋的代碼實現的是同樣的功能,也是鍵盤控制,不過不能設定哪個鍵,只有enter!
tf.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
run(tf,ta,f,d,lab);
// System.out.println(text);
}
});
//給轉到添加鍵盤和鼠標雙控制
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
run(tf,ta,f,d,lab);
// System.out.println(text);
}
});
b.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e){
run(tf,ta,f,d,lab);
}
});
}
//封裝這一方法,為了方便使用(注意這個時候傳遞參數太多了,盡量避免這種情況的發生!
//在一個方法內部創建的對象只有在自己方法體里面才可以直接調用,而在外部方法必須傳遞參數)
public static void run(TextField tf,TextArea ta,Frame f,Dialog d,Label lab){
String dirPath = tf.getText();// 獲取文本(我們想驗證的是路徑),接下來獲取文件
File file = new File(dirPath);// 獲取文件
if (file.exists() && file.isDirectory()) {// 判斷,存在否以及是否是文件夾
ta.setText("");// 如果符合條件的話,清空以前的數據;
String[] names = file.list();
for (String name : names) {
ta.append(name + "\r\n");
}
} else {
//備注:應該在這里構建對話框,為了內存的優化,用到的時候才創建對象,用不到就不創建!
String info = "您輸入的信息:"+dirPath+"有誤,請重新輸入!";
lab.setText(info);
d.setVisible(true);
/**可以這樣寫,但是不專業,現在彈出對話框!
* ta.setText("");
ta.append("對不起,請確認您輸入的是路徑!");
*/
}
}
}