求高手帮忙看一段代码哪错了

cnaaa8 2013-01-21 11:26:17
需求,党运行这个程序时,点文件->保存,然后再新打开的对话框里什么也不选,直接点取消,然后弹出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();
}

}


...全文
381 8 打赏 收藏 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
dz215136304 2013-01-24
  • 打赏
  • 举报
回复
路过 学习啦
cnaaa8 2013-01-22
  • 打赏
  • 举报
回复
引用 3 楼 lsen620 的回复:
额···前面没看好你得需求··· Java code ? 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838……
我如果想让弹出的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)
微风飘过 2013-01-22
  • 打赏
  • 举报
回复
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(); } }
abc41106 2013-01-22
  • 打赏
  • 举报
回复
楼主执行初始化,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();
	}

}
lsen620 2013-01-22
  • 打赏
  • 举报
回复
额···前面没看好你得需求···
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();
	}

}


lsen620 2013-01-22
  • 打赏
  • 举报
回复
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();
	}

}


lsen620 2013-01-22
  • 打赏
  • 举报
回复
dialogs要先初始化再使用···
lsen620 2013-01-22
  • 打赏
  • 举报
回复
不能编译估计是你放的地方不对,要在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();
	}

}

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧