您的位置:首页 > 其它

(98)Menu简单文本编辑器实现功能:文件打开,保存,退出

2017-07-27 19:06 591 查看


Menu中既可以添加Menu,也可以添加MenuItem

注意menu:可添加在menubar中或者menu中(添加在menu中形成子菜单)

menuItem:添加在menue中

menubar:添加在Frame中

需求:建立如下窗体,并实现菜单的功能



MenuItem:类中有监听器:public void addActionListener(ActionListener l),所以MenueItem以及其子类都可以用此监听器

import java.awt.*;
import java.awt.event.*;
public class MyMenueDemo {

private Frame f;
private MenuBar mb;
private Menu m,subMenu;
private MenuItem closeItem,subItem;
MyMenueDemo(){
init();
}
public void init() {
f=new Frame("my Window");
f.setBounds(300, 100, 500, 600);
f.setLayout(new FlowLayout());

mb=new MenuBar();

m=new Menu("文件");

subMenu=new Menu("子菜单");

subItem=new MenuItem("子菜单项");
closeItem=new MenuItem("退出");

subMenu.add(subItem);

m.add(subMenu);
m.add(closeItem);
mb.add(m);

f.setMenuBar(mb);
myEvent();

f.setVisible(true);

}

public void myEvent() {

closeItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});

f.addWindowList
4000
ener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {
System.exit(0);
}

});
}
}




需求:希望能够创建一个“打开”对话框,就像word–>文件—>打开,弹出的对话框一样。

在Dialog子类FileDialog就可以实现这个功能(调用window窗口),方便了变成开发。

FileDialog类显示一个对话框窗口,用户可以从中选择文件。

public FileDialog(Frame parent,String title, int mode):根据mode的选取不同可以打开文件或者保存文件



TextArea类中

public void append(String str)将给定文本追加到文本区的当前文本。

import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class MyMenueDemo {

private Frame f;
private MenuBar bar;
private TextArea  ta;
private Menu fileMenu;
private MenuItem closeItem,openItem,saveItem;
private FileDialog openDia,saveDia;

private File file;
MyMenueDemo(){
init();
}
public void init() {
f=new Frame("my Window");
f.setBounds(300, 100, 500, 600);
//不设置布局,默认四周式,只有一个组件TextArea ,会显示整个窗体,也比较合理

bar=new MenuBar();

fileMenu=new Menu("文件");
closeItem=new MenuItem("退出");
openItem=new MenuItem("打开");
saveItem=new MenuItem("保存");
ta=new TextArea();

fileMenu.add(openItem);
fileMenu.add(saveItem);
fileMenu.add(closeItem);
bar.add(fileMenu);
f.setMenuBar(bar);
f.add(ta);

openDia=new FileDialog(f,"我要打开",FileDialog.LOAD);
saveDia=new FileDialog(f,"我要保存",FileDialog.SAVE);

myEvent();

f.setVisible(true);

}
public void myEvent() {

openItem.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {
openDia.setVisible(true);
String str=openDia.getFile();//获取选中的文件名称
String dir=openDia.getDirectory();//获取目录

if(str==null||dir==null)//用户不想打开文件
return;
ta.setText("");//将之前的文件的文本删除
file=new File(dir,str);
BufferedReader br=null;
try
{
//将硬盘上的文件内容写到文本区域中
br=new BufferedReader(new FileReader(file));
String len=null;
try
{
while((len=br.readLine())!=null)
{
ta.append(len+"\r\n");

}

}
catch (IOException e1)
{

e1.printStackTrace();
}
}
catch (FileNotFoundException e1)
{

e1.printStackTrace();
}
finally
{

try
{
br.close();
}
catch (IOException e1)
{

e1.printStackTrace();
}

}

}
});

closeItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
saveItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {

if(file==null)
{
saveDia.setVisible(true);

String str=saveDia.getFile();
String dir=saveDia.getDirectory();
System.out.println(dir+"------------"+str);//用户文件保存位置
if(dir==null||str==null)//新写的文件没保存
return ;
file=new File(dir,str);
}
BufferedWriter bufw=null;
try
{

bufw=new BufferedWriter(new FileWriter(file));

String text=ta.getText();//从文本区域中获取数据,写入文件中
bufw.write(text);
bufw.flush();

}
catch (IOException e1)
{

throw new RuntimeException("没这文件");
}
finally{
try
{
bufw.close();
}
catch (IOException e1)
{

e1.printStackTrace();
}

}

}
});

f.addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {
System.exit(0);
}

});

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐