1. 程式人生 > >Java的GUI學習十(彈出對話方塊Dialog)

Java的GUI學習十(彈出對話方塊Dialog)

我愛樓主真的哈哈哈哈學習來自 http://www.cnblogs.com/xingyunblog/p/3870207.html

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;
class GUI9 {
	private Frame f;
	private TextField tf;
	private Button but;
	private TextArea ta;
	
	private Dialog d;
	private Label lab;
	private Button okbut;
	
	GUI9(){
		init();
	}
	public void init()
	{
		f = new Frame("Galesaur");//建立窗體物件
		f.setBounds(300,100,600,500);//設定窗體位置和大小
		f.setLayout(new FlowLayout()); //設定窗體佈局為流式佈局
		f.setVisible(true); //設定窗體可見
		
		tf = new TextField(60);//建立單行文字物件60長度大小字元
		but = new Button("轉到");  //建立按鈕物件 
		ta = new TextArea(25,70);//建立多行文字物件25行 70列
		
		
		d = new Dialog(f,"提示資訊-self",true); //彈出的對話方塊
		d.setBounds(400,200,350,150);
		d.setLayout(new FlowLayout()); //設定彈出的對話方塊的佈局為流式佈局
		lab = new Label(); //建立lab標籤 填寫提示內容
		okbut  = new Button("確定");//建立確定按鈕
		d.add(lab);
		d.add(okbut);
		f.add(tf); //單行文字新增到窗體上
		f.add(but);//按鈕新增到窗體上
		f.add(ta); //多行文字新增到窗體上
		myEvent();//載入事件處理
	}
	private void myEvent() {
		
        //ok按鈕監聽器
        okbut.addActionListener(new ActionListener() {
        	 public void actionPerformed(ActionEvent e) {
                 d.setVisible(false);
             }
        });
        
        //文字框相容器
        tf.addKeyListener(new KeyAdapter() {
            public void keyPressed(KeyEvent e) {
                if (e.getKeyCode() == KeyEvent.VK_ENTER)//如果按下回車鍵執行showDir()功能函式
                    showDir();//呼叫功能函式
            }
        });

        // 對話方塊監聽器
        d.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                d.setVisible(false);//設定對話方塊不可見
            }
        });
        
		//按鈕事件監聽器
		but.addActionListener(new ActionListener()
	    {
			public void actionPerformed(ActionEvent e) {
				showDir(); //按下轉到之後也是執行showDir()
			}
		});
		//窗體關閉監聽器
        f.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });	
	}
	private void showDir() {
		// TODO Auto-generated method stub
		String dirPath  = tf.getText();//獲取單行文字內容
		File dir = new File(dirPath);//將字串dirpath封裝撐檔案
		//如果穩健存在,而且是個目錄執行下列操作
		if(dir.exists() && dir.isDirectory())
		{
			ta.setText(null);//沒開啟一個目錄前清空多行文字內容
			String[] names = dir.list();//檔案目錄列表存放在字串陣列中
			for(String name:names)
				ta.append(name + "\r\n"); //追加文字內容並換行 
		}else
		{
			String info = "您輸入的路徑" + dirPath + "是錯誤的,請重新輸入";
			lab.setText(info); //顯示錯誤文字提示資訊
			d.setVisible(true); //顯示對話方塊可見
		}
	}
	public static void main(String[] args){
        new GUI9();
   }
	
}

圖: