Java记事本提一个问题,java记事本的几个小问题

Java codeimport javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.io.*;

import javax.swing.undo.*;

import javax.swing.event.*;

public class NotePad extends JFrame {

private UndoManager manager;

private JFileChooser choose;

private File selectedfile;

private JTextArea text;

private java.awt.Container container;

private JMenuBar menuBar;

private JTextField status;

private boolean newPage = false;

// File菜单

private JMenu menu;

private JMenuItem newText;

private JMenuItem open;

private JCheckBoxMenuItem readOnly;

private JMenuItem save;

private JMenuItem saveAs;

private JMenuItem exit;

// Edit菜单

private JMenu edit;

private JMenuItem undo;

private JMenuItem redo;

private JMenuItem cut;

private JMenuItem copy;

private JMenuItem copyAll;

private JMenuItem paste;

private JMenuItem delete;

private JMenuItem deleteAll;

private JMenuItem selectAll;

private JMenuItem searchAndReplace;

// 视图菜单

private JMenu view;

private JCheckBoxMenuItem wrap;

private JCheckBoxMenuItem onTop;

private JMenuItem zoomIn;

private JMenuItem zoomOut;

// 工具菜单

private JMenu tool;

private JMenuItem fontSum;

private JMenuItem setcolor;

private JMenuItem setFontColor;

// 帮助菜单

private JMenu help;

private JMenuItem about;

// 右键菜单

private JPopupMenu pop;

private JMenuItem popUndo;

private JMenuItem popRedo;

private JMenuItem popCut;

private JMenuItem popCopy;

private JMenuItem popSelectAll;

private JMenuItem popCopyAll;

private JMenuItem popPaste;

private JMenuItem popDelete;

private JMenuItem popClear;

public NotePad() {

super("记事本");

try{

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

}catch(Exception e){}

container = getContentPane();

container.setLayout(new BorderLayout(0,-2));

manager = new UndoManager();

text = new JTextArea();

text.setFont(new Font("宋体",Font.PLAIN,14));

text.getDocument().addUndoableEditListener(manager);

text.setTabSize(2);

text.setSelectedTextColor(Color.WHITE);

text.setSelectionColor(Color.DARK_GRAY);

text.setLineWrap(true);

text.setWrapStyleWord(true);

text.setCaretColor(Color.RED);

text.setMargin(new Insets(3, 10, 3, 7));

text.setDragEnabled(true);

container.add(new JScrollPane(text,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED));

menuBar = new JMenuBar();

// File菜单

menu = new JMenu("文件(F)");

menu.setMnemonic('F');

newText = new JMenuItem("新建(N)");

newText.setMnemonic('N');

newText.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent event) {

if(selectedfile == null && !text.getText().equals("") &&

JOptionPane.showConfirmDialog(container, "是否保存", "是否保存", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION){

choose = new JFileChooser();

int state = choose.showSaveDialog(container);

if (state == JFileChooser.APPROVE_OPTION) {

try {

File file = choose.getSelectedFile();

FileWriter os = new FileWriter(file);

os.write(text.getText(), 0, text.getText().length());

os.flush();

file.createNewFile();

os.close();

} catch (IOException e) {

JOptionPane.showMessageDialog(container, "保存文件失败","ERROR", JOptionPane.ERROR_MESSAGE);

}

}

}else if(selectedfile != null &&

JOptionPane.showConfirmDialog(container, "是否保存", "是否保存", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION){

try {

FileWriter os = new FileWriter(selectedfile);

os.write(text.getText(), 0, text.getText().length());

os.flush();

os.close();

} catch (IOException e) {}

}

text.setText("");

newPage = true;

selectedfile = null;

status.setText("");

}

});

open = new JMenuItem("打开(O)");

open.setMnemonic('O');

open.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent event) {

if(selectedfile!=null &&

JOptionPane.showConfirmDialog(container, "是否保存", "是否保存", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_NO_OPTION){

try{

FileWriter os = new FileWriter(selectedfile);

os.write(text.getText(), 0, text.getText().length());

os.flush();

os.close();

newPage = false;

}catch(IOException e){}

}else if(selectedfile==null && !text.getText().equals("") &&

JOptionPane.showConfirmDialog(container, "是否保存", "是否保存", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_NO_OPTION){

choose = new JFileChooser();

int state = choose.showSaveDialog(container);

if (state == JFileChooser.APPROVE_OPTION) {

try {

File file = choose.getSelectedFile();

FileWriter os = new FileWriter(file);

os.write(text.getText(), 0, text.getText().length());

os.flush();

file.createNewFile();

os.close();

newPage = false;

} catch (IOException e) {

JOptionPane.showMessageDialog(container, "保存文件失败",

"ERROR", JOptionPane.ERROR_MESSAGE);

}

}

}

choose = new JFileChooser();

choose.setFileFilter(new filter());

int state = choose.showOpenDialog(container);

if (state == JFileChooser.APPROVE_OPTION) {

status.setText(choose.getSelectedFile().toString());

try {

selectedfile = choose.getSelectedFile();

FileReader isr = new FileReader(selectedfile);

text.read(isr, "");

isr.close();

newPage = false;

} catch (IOException e) {

JOptionPane.showMessageDialog(container, "打开文件失败",

"ERROR", JOptionPane.ERROR_MESSAGE);

}

}

}

});

readOnly = new JCheckBoxMenuItem("只读模式(R)");

readOnly.setMnemonic('R');

readOnly.addChangeListener(new ChangeListener() {

public void stateChanged(ChangeEvent event) {

if(readOnly.isSelected()){

text.setEditable(false);

cut.setEnabled(false);

paste.setEnabled(false);

delete.setEnabled(false);

deleteAll.setEnabled(false);

redo.setEnabled(false);

undo.setEnabled(false);

searchAndReplace.setEnabled(false);

popClear.setEnabled(false);

popCut.setEnabled(false);

popDelete.setEnabled(false);

popPaste.setEnabled(false);

popRedo.setEnabled(false);

popUndo.setEnabled(false);

}

else{

text.setEditable(true);

cut.setEnabled(true);

paste.setEnabled(true);

delete.setEnabled(true);

deleteAll.setEnabled(true);

redo.setEnabled(true);

undo.setEnabled(true);

searchAndReplace.setEnabled(true);

popClear.setEnabled(true);

popCut.setEnabled(true);

popDelete.setEnabled(true);

popPaste.setEnabled(true);

popRedo.setEnabled(true);

popUndo.setEnabled(true);

}

}

});

save = new JMenuItem("保存(S)");

save.setMnemonic('S');

save.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent event) {

if (newPage == true || selectedfile == null) {

choose = new JFileChooser();

int state = choose.showSaveDialog(container);

if (state == JFileChooser.APPROVE_OPTION) {

try {

File file = choose.getSelectedFile();

FileWriter os = new FileWriter(file);

os.write(text.getText(), 0, text.getText().length());

os.flush();

file.createNewFile();

os.close();

newPage = false;

} catch (IOException e) {

JOptionPane.showMessageDialog(container, "保存文件失败","ERROR", JOptionPane.ERROR_MESSAGE);

}

}

} else if(newPage == false && selectedfile != null){

try {

FileWriter os = new FileWriter(selectedfile);

os.write(text.getText(), 0, text.getText().length());

os.flush();

os.close();

} catch (IOException e) {

JOptionPane.showMessageDialog(container, "保存文件失败","ERROR", JOptionPane.ERROR_MESSAGE);

}

}

}

});

saveAs = new JMenuItem("另存为(A)");

saveAs.setMnemonic('A');

saveAs.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent event) {

choose = new JFileChooser();

int state = choose.showSaveDialog(container);

if (state == JFileChooser.APPROVE_OPTION) {

try {

File file = choose.getSelectedFile();

FileWriter os = new FileWriter(file);

os.write(text.getText(), 0, text.getText().length());

os.flush();

file.createNewFile();

os.close();

newPage = false;

} catch (IOException e) {

JOptionPane.showMessageDialog(container, "保存文件失败","ERROR", JOptionPane.ERROR_MESSAGE);

}

}

}

});

exit = new JMenuItem("退出(Q)");

exit.setMnemonic('Q');

exit.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent event) {

System.exit(0);

}

});

menu.add(newText);

menu.add(open);

menu.add(readOnly);

menu.add(save);

menu.add(saveAs);

menu.add(exit);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值