本帖最后由 罗广伟 于 2013-7-18 10:58 编辑
- /*
- * 创建窗体,输入路径显示指定路径文件,如不存在给出对话框提示,
- * 并在输入完成后按回车键可执行查找功能;
- */
- import java.awt.*;
- import java.io.*;
- import java.awt.event.*;
- class MyWindowDemo
- {
- private Frame f;
- private Button b;
- private TextField tf;
- private TextArea ta;
- private Button ok;
- private Dialog d;
- MyWindowDemo()
- {
- init();
- }
- private void init()
- {
- f=new Frame("my frame");
- f.setBounds(300,200,476,390);
- f.setLayout(new FlowLayout());
- f.setVisible(true);
-
- tf=new TextField();
- tf.setColumns(50);
-
- b=new Button("转到");
-
- ta=new TextArea(19, 57);
- ta.setVisible(true);
-
-
-
- f.add(tf);
- f.add(b);
- f.add(ta);
-
- myEvent();
-
- }
- private void myEvent()
- {
- f.addWindowListener(new WindowAdapter()
- {
- public void windowClosing(WindowEvent e)
- {
- System.exit(0);
- }
- });
- b.addActionListener(new ActionListener()
- {
- public void actionPerformed(ActionEvent e)
- {
-
- String dir=tf.getText();
- File file=new File(dir);
- if(file.isDirectory())
- {
- String[] name=file.list();
- for(String fname:name)
- {
- ta.append(fname+"\r\n");
- }
- }
- else//¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥
- {
- d=new Dialog(f,"提示信息",true);
- d.setBounds(300,200,300,200);
- d.setLayout(new FlowLayout());
- ok=new Button("确定");
- d.add(ok);
- d.addWindowListener(new WindowAdapter()
- {
- public void windowClosing(WindowEvent e)
- {
- d.setVisible(false);
-
- }
- });
- ok.addActionListener(new ActionListener()
- {
- public void actionPerformed(ActionEvent e)
- {
- d.setVisible(false);
- }
- });
- d.setVisible(true);
- }
- tf.setText("");
- }
- });
- }
- public void sop(Object obj)
- {
- System.out.println(obj);
- }
复制代码 问题位置:22天gui--10 毕老师说正确做法是将建立对话框和对话框中按钮对象放在else中,为了方便所以毕老师就放在init()函数中了,我把建立对话框和对话框中按钮放在else中后发现两个问题。1、对话框和对话框中按钮监听器也必须放在else中,否则报空指针异常。
2、dialog的setvisible()方法必须放在两个监听器后才行,否者监听器不起作用。
这是为什么呢 |