需求,党运行这个程序时,点文件->保存,然后再新打开的对话框里什么也不选,直接点取消,然后弹出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();
}}
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();
}}
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();
}}
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();
}}
楼主可以单步调试一下看看就清楚了。
不知道这个有什么用,不知道楼主为什么不用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();
}}
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();
}}
隐藏: 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)
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();
}}