记事本

package com.GUI.wx;

 

import java.awt.BorderLayout;

import java.awt.Container;

import java.awt.Font;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.InputEvent;

import java.awt.event.KeyAdapter;

import java.awt.event.KeyEvent;

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

 

import javax.swing.BorderFactory;

import javax.swing.JFileChooser;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JMenu;

import javax.swing.JMenuBar;

import javax.swing.JMenuItem;

import javax.swing.JOptionPane;

import javax.swing.JPopupMenu;

import javax.swing.JScrollPane;

import javax.swing.JTextArea;

import javax.swing.KeyStroke;

import javax.swing.ScrollPaneConstants;

import javax.swing.SwingConstants;

 

public class JNotePadUI extends JFrame {

/**

*/

private static final long serialVersionUID = 1L;

private JMenuItem menuOpen;

private JMenuItem menuClose;

private JMenuItem menuSave;

private JMenuItem menuSaveAs;

 

private JMenu editMenu;

private JMenuItem menuCopy;

private JMenuItem menuPaste;

private JMenuItem menuCut;

 

private JTextArea textArea;

 

private JMenuItem menuHelp;

private JMenuItem menuExplan;

private JPopupMenu popUpMenu;

 

private JLabel stateBar;

 

/**

* @param args

*/

public JNotePadUI() {

super("文本编辑器");

setUpUICoponent();

setUpEventListenner();

setVisible(true);

}

 

private void setUpUICoponent() {

setSize(400, 300);

// 菜单栏

JMenuBar menuBar = new JMenuBar();

 

// 设置文件菜单

JMenu fileMenu = new JMenu("文件");

menuBar.add(fileMenu);

menuOpen = new JMenuItem("打开");

// 快捷菜单设置

menuOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,

InputEvent.CTRL_MASK));

menuSave = new JMenuItem("保存");

menuSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,

InputEvent.CTRL_MASK));

menuSaveAs = new JMenuItem("另存为");

menuClose = new JMenuItem("关闭");

menuClose.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,

InputEvent.CTRL_MASK));

fileMenu.add(menuOpen);

fileMenu.addSeparator(); // 分隔线

fileMenu.add(menuSave);

fileMenu.add(menuSaveAs);

fileMenu.addSeparator(); // 分隔线

fileMenu.add(menuClose);

 

// 设置编辑菜单

editMenu = new JMenu("编辑");

menuBar.add(editMenu);

menuCut = new JMenuItem("剪切");

menuCut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,

InputEvent.CTRL_MASK));

menuCopy = new JMenuItem("复制");

menuCopy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,

InputEvent.CTRL_MASK));

menuPaste = new JMenuItem("粘贴");

menuPaste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,

InputEvent.CTRL_MASK));

editMenu.add(menuCut);

editMenu.add(menuCopy);

editMenu.add(menuPaste);

 

JMenu aboutMenu = new JMenu("关于");

menuBar.add(aboutMenu);

menuHelp = new JMenuItem("帮助");

menuExplan = new JMenuItem("说明");

aboutMenu.add(menuHelp);

aboutMenu.add(menuExplan);

 

setJMenuBar(menuBar);

 

// 文本区

textArea = new JTextArea();

textArea.setFont(new Font("宋体", Font.PLAIN, 16));

textArea.setLineWrap(true);

JScrollPane paneText = new JScrollPane(textArea,

ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,

ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);

 

Container contenPane = getContentPane();

contenPane.add(paneText, BorderLayout.CENTER);

// //状态栏

stateBar = new JLabel("未修改");

stateBar.setHorizontalAlignment(SwingConstants.LEFT);

stateBar.setBorder(BorderFactory.createEtchedBorder());

contenPane.add(stateBar, BorderLayout.SOUTH);

 

popUpMenu = editMenu.getPopupMenu();

}

 

public void setUpEventListenner() {

// 单击关闭窗口按钮事件处理

addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

closeFile();

}

});

// 菜单-打开

menuOpen.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

openFile();

}

});

// 菜单-保存

menuSave.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

saveFile();

}

});

// 菜单-另存为

menuSaveAs.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

saveFileAs();

}

});

// 菜单-关闭

menuClose.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

closeFile();

}

});

// 菜单-剪切

menuCut.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

cut();

}

});

// 菜单-复制

menuCopy.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

copy();

}

});

// 菜单-粘贴

menuPaste.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

paste();

}

});

// 菜单-说明

menuExplan.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

JOptionPane.showOptionDialog(null, " welcome to use ", null,

JOptionPane.INFORMATION_MESSAGE,

JOptionPane.DEFAULT_OPTION, null, null, null);

}

});

// 编辑区键盘事件

textArea.addKeyListener(new KeyAdapter() {

public void keyTyped(KeyEvent e) {

processTextArea();

}

});

// 编辑区鼠标事件

textArea.addMouseListener(new MouseAdapter() {

public void mouseReleased(MouseEvent e) {

if (e.getButton() == MouseEvent.BUTTON3)

popUpMenu.show(editMenu, e.getX(), e.getY());

}

 

public void mouseClicked(MouseEvent e) {

if (e.getButton() == MouseEvent.BUTTON1)

popUpMenu.setVisible(false);

}

});

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

 

打开文件

private void openFile() {

//查看当前文件状态

if (isCurrentFileSaved()) {

open();

} else {

int option = JOptionPane.showConfirmDialog(null, "文件已修改,是否保存?",

"保存文件?", JOptionPane.YES_NO_OPTION,

JOptionPane.WARNING_MESSAGE, null);

switch (option) {

case JOptionPane.YES_OPTION:

saveFile();

break;

case JOptionPane.NO_OPTION:

open();

break;

}

}

}

 

// open()

private void open() {

JFileChooser fileChooser=new JFileChooser();

//显示文件选取对话框

int option = fileChooser.showDialog(null, null);

//用户单击确认按钮

if (option == JFileChooser.APPROVE_OPTION) {

try {

//打开选取的文件

BufferedReader buf = 

new BufferedReader(

new FileReader(

fileChooser.getSelectedFile()));

//设置文件标题

setTitle(fileChooser.getSelectedFile().toString());

//删除前一次文件

textArea.setText("");

//设置状态栏

stateBar.setText("未修改");

//取得系统相依的换行字符

String lineSeparator = System.getProperty("line.separator");

//读取文件并附加至文本编辑区

String text;

while ((text = buf.readLine()) != null) {

textArea.append(text);

textArea.append(lineSeparator);

}

buf.close();

} catch (IOException e) {

JOptionPane.showMessageDialog(null, e.toString(), "开启文件失败",

JOptionPane.ERROR_MESSAGE);

}

}

}

 

存储文件

private void saveFile() {

//从标题栏获取名称

File file = new File(getTitle());

//若制定的文件不存在

if (!file.exists()){

//执行另存为

saveFileAs();

} else {

try {

//打开指定的文件

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

//将文の编辑区的文字写入文件

buf.write(textArea.getText());

buf.close();

//设置状态栏为未修改

stateBar.setText("未修改");

} catch (IOException e) {

JOptionPane.showMessageDialog(null, e.toString(), "写入文件失败",

JOptionPane.ERROR_MESSAGE);

}

}

}

 

// 另存文件

private void saveFileAs() {

JFileChooser fileChooser=new JFileChooser();

//显示文件对话框

int option = fileChooser.showDialog(null, "保存");

//如果确认选取文件

if (option == JFileChooser.APPROVE_OPTION) {

//取得选取文件

File file = fileChooser.getSelectedFile();

//在标题篮设置文件的名称

setTitle(file.toString());

 

try {

//建立文件

file.createNewFile();

//进行文件保存

saveFile();

} catch (IOException e) {

JOptionPane.showMessageDialog(null, e.toString(), "无法建立新文件",

JOptionPane.ERROR_MESSAGE);

}

}

}

 

/// 关闭文件

private void closeFile() {

//是否已经保存文件

if (isCurrentFileSaved()) {

//释放窗口资源,而后关闭程序

dispose();

} else {

int option = JOptionPane.showConfirmDialog(null, "文件已经修改,是否保存?",

"保存文件?", JOptionPane.YES_NO_CANCEL_OPTION,

JOptionPane.WARNING_MESSAGE, null);

switch (option) {

//确认文件保存

case JOptionPane.YES_OPTION:

saveFile();//保存文件

break;

//放弃保存文件

case JOptionPane.NO_OPTION:

dispose();

}

}

}

 

/// 查看当前文件状态

private boolean isCurrentFileSaved() {

if (stateBar.getText().equals("未修改"))

return true;

else {

return false;

}

}

 

/// 剪切文件

private void cut() {

textArea.cut();

stateBar.setText("已修改");

popUpMenu.setVisible(false);

}

 

/// 复制文件

private void copy() {

textArea.copy();

popUpMenu.setVisible(false);

}

 

/ 粘贴文件

private void paste() {

textArea.paste();

stateBar.setText("已修改");

popUpMenu.setVisible(false);

}

 

private void processTextArea() {

stateBar.setText("已修改");

}

 

public static void main(String[] args) {

new JNotePadUI();

 

}

 

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值