A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马连家华 中级黑马   /  2012-7-16 17:55  /  1873 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Noword 于 2012-7-18 14:04 编辑

        public static void dialogui()
        {
                wrongDirectoryDialog.setLayout(new BorderLayout());
                wrongDirectoryDialog.add(lable,BorderLayout.NORTH);
                button.setSize(8, 3);
                wrongDirectoryDialog.add(button);
                wrongDirectoryDialog.setBounds(600, 300, 300, 80);
                wrongDirectoryDialog.setVisible(true);
                button.addActionListener(new ActionListener()
                {
                        public void actionPerformed(ActionEvent aeb)
                        {
                                wrongDirectoryDialog.setVisible(false);
                        }
                });
}
wrongDirectoryDialog和button已经定义了,调用dialogui后按button dialog后没反应..

9 个回复

正序浏览
好吧,问题还是要自己解决:
setVisible是一个阻塞式方法
就是这么简单...
回复 使用道具 举报
难道出现了问题太简单 大家不屑回答的现象吗?
回复 使用道具 举报
怎么了?
是代码长了吗?
回复 使用道具 举报
把所有代码贴上来吧..

package day22;

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Dialog;
import java.awt.FileDialog;
import java.awt.Frame;
import java.awt.Label;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
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.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class day22 {

        /**
         * @param args
         */
        private static Frame frame = new Frame("MyFrame");
        private static MenuBar mb = new MenuBar();
        private static Menu fileMenu = new Menu("File");
        private static Menu openMenu = new Menu("Open");
        private static MenuItem openTxtMenuItem = new MenuItem("Open txt");
        private static MenuItem saveMenuItem = new MenuItem("Save");
        private static MenuItem quitMenuItem = new MenuItem("Quit");
        private static TextArea ta = new TextArea("",0,0,TextArea.SCROLLBARS_VERTICAL_ONLY);
        private static TextField tf = new TextField();
        private static Dialog wrongDirectoryDialog = new Dialog(frame,"WrongDirectory",true);
        private static Label lable = new Label();
        private static Button button = new Button("OK");
        private static File file = null;
        private static boolean modi = false;
        public static void main(String[] args)
        {
                // TODO Auto-generated method stub
                //显示所输入目录下的文件
                //模拟记事本的读取.保存
                ui();
                windowEvent();
                textFieldEvent();
                menuEvent();
        }
        public static void ui()
        {
                frame.setMenuBar(mb);
                frame.setLayout(new BorderLayout());
                mb.add(fileMenu);
                fileMenu.add(openMenu);
                openMenu.add(openTxtMenuItem);
                fileMenu.add(saveMenuItem);
                fileMenu.add(quitMenuItem);
                frame.add(tf,BorderLayout.NORTH);
                frame.add(ta);
                frame.setBounds(480,100,460,500);
                frame.setVisible(true);
                ta.addKeyListener(new KeyAdapter()
                {
                        public void keyPressed(KeyEvent ket)
                        {
                                modi = false;
                        }
                });
        }
        //=======================可恶的错误在这里============================
        public static void dialogui()
        {
                wrongDirectoryDialog.setLayout(new BorderLayout());
                wrongDirectoryDialog.add(lable,BorderLayout.NORTH);
                button.setSize(8, 3);
                wrongDirectoryDialog.add(button);
                wrongDirectoryDialog.setBounds(600, 300, 300, 80);
                wrongDirectoryDialog.setVisible(true);
                button.addActionListener(new ActionListener()
                {
                        public void actionPerformed(ActionEvent aeb)
                        {
                                wrongDirectoryDialog.setVisible(false);
                        }
                });
                wrongDirectoryDialog.addWindowListener(new WindowAdapter()
                {
                        public void windowClosing(WindowEvent wed)
                        {
                                wrongDirectoryDialog.setVisible(false);
                        }
                });
        }
        public static void menuEvent()
        {
                quitMenuItem.addActionListener(new ActionListener()
                {
                        public void actionPerformed(ActionEvent aeq)
                        {
                                System.exit(0);
                        }
                });
                saveMenuItem.addActionListener(new ActionListener()
                {
                        private BufferedWriter bw;

                        @SuppressWarnings("null")
                        public void actionPerformed(ActionEvent aes)
                        {
                                if(file != null)
                                {
                                        try
                                        {
                                                bw = new BufferedWriter(new FileWriter(file));
                                                bw.write(ta.getText());
                                        }
                                        catch(IOException ioe)
                                        {
                                                throw new RuntimeException("文件写入失败");
                                        }
                                        finally
                                        {
                                                try {
                                                        bw.close();
                                                } catch (IOException e) {
                                                        // TODO Auto-generated catch block
                                                        e.printStackTrace();
                                                }
                                        }
                                }
                                else
                                {
                                        FileDialog saveFD = new FileDialog(frame,"Save",FileDialog.SAVE);
                                        saveFD.setVisible(true);
                                        file = new File(saveFD.getDirectory(),saveFD.getFile());
                                        try
                                        {
                                                bw = new BufferedWriter(new FileWriter(file));
                                                bw.write(ta.getText());
                                        }
                                        catch(IOException ioe)
                                        {
                                                throw new RuntimeException("文件写入失败");
                                        }
                                        finally
                                        {
                                                try {
                                                        bw.close();
                                                } catch (IOException e) {
                                                        // TODO Auto-generated catch block
                                                        e.printStackTrace();
                                                }
                                        }
                                       
                                       
                                }
                        }
                });
                openTxtMenuItem.addActionListener(new ActionListener()
                {
                        private BufferedReader br;
       
                        public void actionPerformed(ActionEvent aeo)
                        {
                                FileDialog openFD = new FileDialog(frame,"Open",FileDialog.LOAD);
                                openFD.setVisible(true);
                                file = new File(openFD.getDirectory(),openFD.getFile());
                                try
                                {
                                        ta.setText("");
                                        br = new BufferedReader(new FileReader(file));
                                        String buffer = null;
                                        while((buffer = br.readLine()) != null)
                                        {
                                                ta.append(buffer+"\r\n");
                                        }
                                }
                                catch(IOException ioe)
                                {
                                        throw new RuntimeException("文件读取失败");
                                }
                                finally
                                {
                                        try {
                                                br.close();
                                        } catch (IOException e) {
                                                // TODO Auto-generated catch block
                                                e.printStackTrace();
                                        }
                                }
                        }
                });
               
        }
        public static void windowEvent()
        {
                frame.addWindowListener(new WindowAdapter()
                {
                        public void windowClosing(WindowEvent wef)
                        {
                                System.exit(0);
                        }
                });
        }
        public static void textFieldEvent()
        {
                tf.addKeyListener(new KeyAdapter()
                {
                        public void keyPressed(KeyEvent ket)
                        {
                                if(ket.getKeyCode() == KeyEvent.VK_ENTER)
                                {
                                        String dir = tf.getText();
                                        File directory = new File(dir);
                                        if (directory.isDirectory())
                                        {
                                                tf.setText("");
                                                ta.setText("");
                                                for(File f : directory.listFiles())
                                                {
                                                        ta.append(f.getAbsolutePath()+"\r\n");
                                                }
                                        }
                                        else
                                        {
                                                lable.setText("Wrong directory :"+dir);
                                                dialogui();
                                        }
                                }
                        }
                });
        }
}
回复 使用道具 举报
鲍霄霄 发表于 2012-7-16 18:24
我查找的资料可以理解下:
Dialog 是一个带标题和边界的顶层窗口,边界一般用于从用户处获得某种形式的输入 ...

学习了...
回复 使用道具 举报
本帖最后由 鲍霄霄 于 2012-7-16 18:25 编辑

我查找的资料可以理解下:
Dialog 是一个带标题和边界的顶层窗口,边界一般用于从用户处获得某种形式的输入。Dialog 的大小包括边界所指定的任何区域。边界区的维度可以使用 getInsets 方法获得,但是,由于这些维度是依赖于平台的,因此只有通过调用 pack 或 show 将 dialog 设置为可显示的,才能获得有效的 insets 值。由于 dialog 的总大小包括了边界区,因此边界有效地模糊了 dialog 的部分区域,约束了可用于在矩形中呈现或显示子部件的区域,矩形左上角的位置为 (insets.left, insets.top),宽度为 width - (insets.left + insets.right),长度为 height - (insets.top + insets.bottom)。
Dialog 的默认布局为 BorderLayout。

Dialog 可以使用 setUndecorated 关闭本机装饰(例如 Frame & Titlebar)。只有在 dialog 不是 displayable 时才能完成此操作。

在构造 dialog 时,dialog 可以拥有另一个窗口作为它自己的窗口。当可见的 dialog 的所有者窗口被最小化时,dialog 会自动隐藏为对用户不可见。当所有者窗口被还原时,dialog 重新又变为用户可见的。

在多屏幕环境中,可以在不同于其所有者的屏幕设备上创建 Dialog。有关更多信息,请参阅 java.awt.Frame。

dialog 可以是无模式的(默认情况下)或有模式的。有模式的 dialog 会阻止将内容输入到应用程序中的其他一些顶层窗口中(将此 dialog 创建为其所有者的所有窗口除外)。有关细节,请参阅 AWT Modality 规范。

Dialog 能够产生以下 WindowEvents:WindowOpened、WindowClosing、WindowClosed、WindowActivated、WindowDeactivated、WindowGainedFocus、WindowLostFocus。
version
回复 使用道具 举报
是静态,没有错误提示
回复 使用道具 举报
你运行是没有报错吗?把错误信息给我
回复 使用道具 举报
wrongDirectoryDialog是静态?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马