在上節基礎上添加對話框顯示錯誤信息。
代碼如下:
/*彈出對話框顯示錯誤信息,對話框一般不單獨出現,一般依賴於窗體。*/ /*練習-列出指定目錄內容*/ 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 MyWindowDemo { private Frame f; private TextField tf; private Button but; private TextArea ta; private Dialog d; private Label lab; private Button okBut; MyWindowDemo() { init(); } public void init() { f = new Frame("by 星雲");// 創建窗體對象 f.setBounds(300, 100, 600, 500);// 設置窗體位置和大小 f.setLayout(new FlowLayout());// 設置窗體布局為流式布局 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();// 加載事件處理 f.setVisible(true);// 設置窗體可見 } private void myEvent() { // 確定按鈕監聽器 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(); } }); // 窗體關閉監聽器 f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); } //showDir()功能函數 private void showDir(){ String dirPath = tf.getText();// 獲取單行文本內容保存到字符串dirPath中 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 MyWindowDemo(); } }