/*
*这是一个简单的记事本,只有新建、打开、保存、另存为、退出五个基本的功能。
*/
package classfile;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
public class GUIDemo
{
public static void main(String[] args)
{
new GUIDemo();
}
//定义所有组件
private Frame frame;
private TextArea textArea;
private MenuBar menuBar;
private FileDialog fileDialog;
private Menu menuFile;
private MenuItem menuItemNew;
private MenuItem menuItemOpen;
private MenuItem menuItemSave;
private MenuItem menuItemSaveAs;
private MenuItem menuItemClose;
File file;
BufferedReader br;
PrintWriter pw;
//创建实例即启动窗体
public GUIDemo()
{
initialize();
}
//初始化窗体
private void initialize()
{
frame = new Frame("我的记事本");
textArea = new TextArea();
frame.setBounds(300,100,800,500);
addFrameListener();
frame.add(textArea);
addMenuBar();
frame.setVisible(true);
}
//添加窗体监听
private void addFrameListener()
{
frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e)
{
//调用菜单的关闭功能。
addMenuItemCloseActionListener();
}
});
}
//添加菜单栏
private void addMenuBar()
{
menuBar = new MenuBar();
menuFile = new Menu("文件");
menuItemNew = new MenuItem("新建");
menuItemOpen = new MenuItem("打开");
menuItemSave = new MenuItem("保存");
menuItemSaveAs = new MenuItem("另存为");
menuItemClose = new MenuItem("退出");
//为菜单项添加活动监听
addMenuBarActionListener();
//将菜单项添加到菜单条中
menuFile.add(menuItemNew);
menuFile.add(menuItemOpen);
menuFile.add(menuItemSave);
menuFile.add(menuItemSaveAs);
menuFile.add(menuItemClose);
//将菜单添加到菜单栏上
menuBar.add(menuFile);
//将菜单栏添加到窗体上
frame.setMenuBar(menuBar);
}
//添加菜单项的活动监听
private void addMenuBarActionListener()
{
menuItemNew.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e)
{
addMenuItemNewActionListener();
}
});
menuItemOpen.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e)
{
addMenuItemOpenActionListener();
}
});
menuItemSave.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e)
{
addMenuItemSaveActionListener();
}
});
menuItemSaveAs.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e)
{
addMenuItemSaveAsActionListener();
}
});
menuItemClose.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e)
{
addMenuItemCloseActionListener();
}
});
}
//新建文本功能模块
private void addMenuItemNewActionListener()
{
String fileText = textArea.getText();
if(fileText!=null)
{
//文本区域非空,则先保存再清空文本区域。
addMenuItemSaveActionListener();
}
textArea.setText("");
}
//打开文本功能模块
private void addMenuItemOpenActionListener()
{
fileDialog = new FileDialog(frame,"打开",FileDialog.LOAD);
fileDialog.setBounds(400,150,500,300);
fileDialog.setVisible(true);
String fileDirectory = fileDialog.getDirectory();
String fileName = fileDialog.getFile();
if(fileName==null || fileDirectory==null)
return;
textArea.setText("");
file = new File(fileDirectory,fileName);
try
{
br = new BufferedReader(new FileReader(file));
char[] charArray = new char[1024*1024];
int length = 0;
while ((length = br.read(charArray))!=-1)
{
textArea.append(String.valueOf(charArray,0,length));
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
finally
{
if(br!=null)
try
{
br.close();
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
}
//保存文本功能模块
private void addMenuItemSaveActionListener()
{
if(file==null)
{
fileDialog = new FileDialog(frame,"另存为",FileDialog.SAVE);
fileDialog.setBounds(400,150,500,300);
fileDialog.setVisible(true);
String fileDirectory = fileDialog.getDirectory();
String fileName = fileDialog.getFile();
if(fileName==null || fileDirectory==null)
return;
file = new File(fileDirectory,fileName);
}
String fileText = textArea.getText();
try
{
pw = new PrintWriter(file);
pw.println(fileText.trim());
}
catch (Exception ex)
{
ex.printStackTrace();
}
finally
{
if(pw!=null)
try
{
pw.close();
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
}
//文本另存为功能模块
private void addMenuItemSaveAsActionListener()
{
if(fileDialog==null)
{
fileDialog = new FileDialog(frame,"另存为",FileDialog.SAVE);
fileDialog.setBounds(400,150,500,300);
fileDialog.setVisible(true);
}
else
{
fileDialog.setVisible(true);
}
String fileDirectory = fileDialog.getDirectory();
String fileName = fileDialog.getFile();
if(fileName==null || fileDirectory==null)
return;
file = new File(fileDirectory,fileName);
String fileText = textArea.getText();
try
{
pw = new PrintWriter(file);
pw.println(fileText.trim());
}
catch (Exception ex)
{
ex.printStackTrace();
}
finally
{
if(pw!=null)
try
{
pw.close();
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
}
//关闭功能模块
private void addMenuItemCloseActionListener()
{
String fileText = textArea.getText();
if(fileText.trim()!=null)
{
//文本区域非空,则先保存再退出。
addMenuItemSaveActionListener();
}
System.exit(0);
}
}
GUI
最新推荐文章于 2024-06-07 07:15:00 发布