需求,党运行这个程序时,点文件->保存,然后再新打开的对话框里什么也不选,直接点取消,然后弹出dialog对话框,当点确定或者叉时,当前dialog对话框消失,现在的问题见注释import java.io.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
public class jishiben {
private Frame f;
private Menu m,mc;
private MenuBar mb;
private MenuItem closeItem,saveItem,openItem,mcc;
private TextArea  TextAreas;
private FileDialog openDialog,saveDialog;
private Dialog dialogs;
private Label labelTexts;
private Button bt;

jishiben(){
init();
}

public void init(){
f=new Frame("记事本");
f.setBounds(300,100,600,500);
//f.setLayout(new FlowLayout());

mb=new MenuBar();
m=new Menu("文件");
mc=new Menu("子菜单");
openItem =new MenuItem("打开");
saveItem =new MenuItem("保存");
closeItem =new MenuItem("退出");
mcc=new MenuItem("子菜单的子菜单");
m.add(mc);
mc.add(mcc);
m.add(openItem);
m.add(saveItem);
m.add(closeItem);
mb.add(m);
f.setMenuBar(mb);

TextAreas =new TextArea();
TextAreas.setColumns(5);
f.add(TextAreas);




myEvents();
f.setVisible(true);
}

public void myEvents(){
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e){
System.exit(0);
}
});


dialogs.addWindowListener(new WindowAdapter()//当选择点叉时隐藏dialog对画框时,编译都都不能通过,该如何修改呢,如果我想点叉时 直接将dialog对话框关闭(也就是不隐藏),又该如何改呢
{
public void windowClosing(WindowEvent e){
dialogs.setVisible(false);
}
});

saveItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e2) {
saveDialog=new FileDialog(f,"我要打开",FileDialog.LOAD);
saveDialog.setVisible(true);
String getPath=saveDialog.getDirectory();
String getFile=saveDialog.getFile();
if(getPath==null || getFile==null){
dialogs=new Dialog(f,"对不起,你没有选择",true);
labelTexts=new Label("你没有选择任何内容");
bt=new Button("确定");
dialogs.add(labelTexts);
dialogs.add(bt);
dialogs.setBounds(300,300,100,50);
dialogs.setVisible(true);
}
}
});



}

public static void main(String[] args) {
new jishiben();
}}

解决方案 »

  1.   

    package fortest;
    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.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    public class jishiben {
    private Frame f;
    private Menu m,mc;
    private MenuBar mb;
    private MenuItem closeItem,saveItem,openItem,mcc;
    private TextArea  TextAreas;
    private FileDialog openDialog,saveDialog;
    private Dialog dialogs;
    private Label labelTexts;
    private Button bt;

    jishiben(){
    init();
    }

    public void init(){
    f=new Frame("记事本");
    f.setBounds(300,100,600,500);
    //f.setLayout(new FlowLayout());

    mb=new MenuBar();
    m=new Menu("文件");
    mc=new Menu("子菜单");
    openItem =new MenuItem("打开");
    saveItem =new MenuItem("保存");
    closeItem =new MenuItem("退出");
    mcc=new MenuItem("子菜单的子菜单");
    dialogs=new Dialog(f,"dialogs",true);
    m.add(mc);
    mc.add(mcc);
    m.add(openItem);
    m.add(saveItem);
    m.add(closeItem);
    mb.add(m);
    f.setMenuBar(mb);

    TextAreas =new TextArea();
    TextAreas.setColumns(5);
    f.add(TextAreas);




    myEvents();
    f.setVisible(true);
    }

    public void myEvents(){
    f.addWindowListener(new WindowAdapter()
    {
    public void windowClosing(WindowEvent e){
    System.exit(0);
    }
    });


    dialogs.addWindowListener(new WindowAdapter()//当选择点叉时隐藏dialog对画框时,编译都都不能通过,该如何修改呢,如果我想点叉时 直接将dialog对话框关闭(也就是不隐藏),又该如何改呢
    {
    public void windowClosing(WindowEvent e){
    dialogs.setVisible(false);
    }
    });

    saveItem.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e2) {
    saveDialog=new FileDialog(f,"我要打开",FileDialog.LOAD);
    saveDialog.setVisible(true);
    String getPath=saveDialog.getDirectory();
    String getFile=saveDialog.getFile();
    if(getPath==null || getFile==null){
    dialogs.setName("对不起,你没有选择");
    labelTexts=new Label("你没有选择任何内容");
    bt=new Button("确定");
    dialogs.add(labelTexts);
    dialogs.add(bt);
    dialogs.setBounds(300,300,100,50);
    dialogs.setVisible(true);
    }
    }
    });



    }

    public static void main(String[] args) {
    new jishiben();
    }}
      

  2.   

    额···前面没看好你得需求···
    package fortest;
    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.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    public class jishiben {
    private Frame f;
    private Menu m,mc;
    private MenuBar mb;
    private MenuItem closeItem,saveItem,openItem,mcc;
    private TextArea  TextAreas;
    private FileDialog openDialog,saveDialog;
    private Dialog dialogs;
    private Label labelTexts;
    private Button bt;

    jishiben(){
    init();
    }

    public void init(){
    f=new Frame("记事本");
    f.setBounds(300,100,600,500);
    //f.setLayout(new FlowLayout());

    mb=new MenuBar();
    m=new Menu("文件");
    mc=new Menu("子菜单");
    openItem =new MenuItem("打开");
    saveItem =new MenuItem("保存");
    closeItem =new MenuItem("退出");
    mcc=new MenuItem("子菜单的子菜单");
    dialogs=new Dialog(f,"dialogs",true);
    m.add(mc);
    mc.add(mcc);
    m.add(openItem);
    m.add(saveItem);
    m.add(closeItem);
    mb.add(m);
    f.setMenuBar(mb);

    TextAreas =new TextArea();
    TextAreas.setColumns(5);
    f.add(TextAreas);




    myEvents();
    f.setVisible(true);
    }

    public void myEvents(){
    f.addWindowListener(new WindowAdapter()
    {
    public void windowClosing(WindowEvent e){
    System.exit(0);
    }
    });


    dialogs.addWindowListener(new WindowAdapter()//当选择点叉时隐藏dialog对画框时,编译都都不能通过,该如何修改呢,如果我想点叉时 直接将dialog对话框关闭(也就是不隐藏),又该如何改呢
    {
    public void windowClosing(WindowEvent e){
    dialogs.dispose();
    }
    });

    saveItem.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e2) {
    saveDialog=new FileDialog(f,"我要打开",FileDialog.LOAD);
    saveDialog.setVisible(true);
    String getPath=saveDialog.getDirectory();
    String getFile=saveDialog.getFile();
    if(getPath==null || getFile==null){
    dialogs.setTitle("对不起,你没有选择!");
    labelTexts=new Label("你没有选择任何内容");
    bt=new Button("确定");
    dialogs.add(labelTexts);
    dialogs.add(bt);
    dialogs.setBounds(300,300,100,50);
    dialogs.setVisible(true);
    }
    }
    });



    }

    public static void main(String[] args) {
    new jishiben();
    }}
      

  3.   

    楼主执行初始化,dialogs.addWindowListener的时候dialogs还没有实例化呢,肯定报错啊。
    楼主可以单步调试一下看看就清楚了。
    不知道这个有什么用,不知道楼主为什么不用showMessageDialog
    public class jishiben {
    private Frame f;
    private Menu m,mc;
    private MenuBar mb;
    private MenuItem closeItem,saveItem,openItem,mcc;
    private TextArea  TextAreas;
    private FileDialog openDialog,saveDialog;
    private Dialog dialogs;
    private Label labelTexts;
    private Button bt;

    jishiben(){
    init();
    }

    public void init(){
    f=new Frame("记事本");
    f.setBounds(300,100,600,500);
    //f.setLayout(new FlowLayout());

    mb=new MenuBar();
    m=new Menu("文件");
    mc=new Menu("子菜单");
    openItem =new MenuItem("打开");
    saveItem =new MenuItem("保存");
    closeItem =new MenuItem("退出");
    mcc=new MenuItem("子菜单的子菜单");
    m.add(mc);
    mc.add(mcc);
    m.add(openItem);
    m.add(saveItem);
    m.add(closeItem);
    mb.add(m);
    f.setMenuBar(mb);

    TextAreas =new TextArea();
    TextAreas.setColumns(5);
    f.add(TextAreas);
    //在这里初始化dialogs
    dialogs=new Dialog(f,"对不起,你没有选择",true);
    labelTexts=new Label("你没有选择任何内容");
    bt=new Button("确定");
    dialogs.add(labelTexts);
    dialogs.add(bt);
    dialogs.setBounds(300,300,100,50);
    dialogs.setVisible(false);//初始不可见


    myEvents();
    f.setVisible(true);
    }

    public void myEvents(){
    f.addWindowListener(new WindowAdapter()
    {
    public void windowClosing(WindowEvent e){
    System.exit(0);
    }
    });


    dialogs.addWindowListener(new WindowAdapter()//当选择点叉时隐藏dialog
    {
    public void windowClosing(WindowEvent e){
    dialogs.setVisible(false);
    //点叉直接关闭就用dialogs.dispose();
    }
    });

    saveItem.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e2) {
    saveDialog=new FileDialog(f,"我要打开",FileDialog.LOAD);
    saveDialog.setVisible(true);
    String getPath=saveDialog.getDirectory();
    String getFile=saveDialog.getFile();
    if(getPath==null || getFile==null){

    dialogs.setVisible(true);
    }
    }
    });



    }

    public static void main(String[] args) {
    new jishiben();
    }}
      

  4.   

    dialogs没有初始化,可以改为import java.io.*;
    import java.util.*;
    import java.awt.*;
    import java.awt.event.*;
    public class jishiben {
    private Frame f;
    private Menu m,mc;
    private MenuBar mb;
    private MenuItem closeItem,saveItem,openItem,mcc;
    private TextArea  TextAreas;
    private FileDialog openDialog,saveDialog;
    private Dialog dialogs;
    private Label labelTexts;
    private Button bt;

    jishiben(){
    init();
    }

    public void init(){
    f=new Frame("记事本");
    f.setBounds(300,100,600,500);
    //f.setLayout(new FlowLayout());

    mb=new MenuBar();
    m=new Menu("文件");
    mc=new Menu("子菜单");
    openItem =new MenuItem("打开");
    saveItem =new MenuItem("保存");
    closeItem =new MenuItem("退出");
    mcc=new MenuItem("子菜单的子菜单");
    m.add(mc);
    mc.add(mcc);
    m.add(openItem);
    m.add(saveItem);
    m.add(closeItem);
    mb.add(m);
    f.setMenuBar(mb);

    TextAreas =new TextArea();
    TextAreas.setColumns(5);
    f.add(TextAreas);




    myEvents();
    f.setVisible(true);
    }

    public void myEvents(){
    f.addWindowListener(new WindowAdapter()
    {
    public void windowClosing(WindowEvent e){
    System.exit(0);
    }
    });

    dialogs=new Dialog(f,"对不起,你没有选择",true);
    dialogs.addWindowListener(new WindowAdapter()//当选择点叉时隐藏dialog对画框时,编译都都不能通过,该如何修改呢,如果我想点叉时 直接将dialog对话框关闭(也就是不隐藏),又该如何改呢
    {
    public void windowClosing(WindowEvent e){
    dialogs.setVisible(false);
    }
    });

    saveItem.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e2) {
    saveDialog=new FileDialog(f,"我要打开",FileDialog.LOAD);
    saveDialog.setVisible(true);
    String getPath=saveDialog.getDirectory();
    String getFile=saveDialog.getFile();
    if(getPath==null || getFile==null){

    labelTexts=new Label("你没有选择任何内容");
    bt=new Button("确定");
    dialogs.add(labelTexts);
    dialogs.add(bt);
    dialogs.setBounds(300,300,100,50);
    dialogs.setVisible(true);
    }
    }
    });



    }

    public static void main(String[] args) {
    new jishiben();
    }}
      

  5.   

    我如果想让弹出的dialog对话框中点下确定按钮,dialog对话框一样隐藏或者关闭,该如何写呢,我写的关闭和隐藏 编译都不能通过,代码如下
    隐藏:  bt.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    dialogs.setVisible(false);
    }
    });
    关闭:  bt.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
             dialogs.dispose();
    }
    });
    另外我分不清楚什么时候该用ActionListener 什么时候该用ActionAdapter(或者 Listener和Adapter)
      

  6.   

    不能编译估计是你放的地方不对,要在dialogs.add(bt);这个动作发生前注册监听器。
    package fortest;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.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;public class jishiben {
    private Frame f;
    private Menu m, mc;
    private MenuBar mb;
    private MenuItem closeItem, saveItem, openItem, mcc;
    private TextArea TextAreas;
    private FileDialog openDialog, saveDialog;
    private Dialog dialogs;
    private Label labelTexts;
    private Button bt; jishiben() {
    init();
    } public void init() {
    f = new Frame("记事本");
    f.setBounds(300, 100, 600, 500);
    // f.setLayout(new FlowLayout()); mb = new MenuBar();
    m = new Menu("文件");
    mc = new Menu("子菜单");
    openItem = new MenuItem("打开");
    saveItem = new MenuItem("保存");
    closeItem = new MenuItem("退出");
    mcc = new MenuItem("子菜单的子菜单");
    dialogs = new Dialog(f, "dialogs", true);
    m.add(mc);
    mc.add(mcc);
    m.add(openItem);
    m.add(saveItem);
    m.add(closeItem);
    mb.add(m);
    f.setMenuBar(mb); TextAreas = new TextArea();
    TextAreas.setColumns(5);
    f.add(TextAreas); myEvents();
    f.setVisible(true);
    } public void myEvents() {
    f.addWindowListener(new WindowAdapter() {
    public void windowClosing(WindowEvent e) {
    System.exit(0);
    }
    }); dialogs.addWindowListener(new WindowAdapter()// 当选择点叉时隐藏dialog对画框时,编译都都不能通过,该如何修改呢,如果我想点叉时
    // 直接将dialog对话框关闭(也就是不隐藏),又该如何改呢
    {
    public void windowClosing(WindowEvent e) {
    dialogs.dispose();
    }
    }); saveItem.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e2) {
    saveDialog = new FileDialog(f, "我要打开", FileDialog.LOAD);
    saveDialog.setVisible(true);
    String getPath = saveDialog.getDirectory();
    String getFile = saveDialog.getFile();
    if (getPath == null || getFile == null) {
    dialogs.setTitle("对不起,你没有选择!");
    dialogs.setBounds(200, 200, 280, 100);
    labelTexts = new Label("你没有选择任何内容");
    bt = new Button("确定");
    bt.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    dialogs.setVisible(false);
    }
    });
    dialogs.add(labelTexts);
    dialogs.add(bt);
    dialogs.setVisible(true); }
    }
    }); } public static void main(String[] args) {
    new jishiben();
    }}