java Dialog


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("對不起,請確認您輸入的是路徑!");

             */

        }

    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM