问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用java实现记事本全部功能

发布网友 发布时间:2022-05-13 08:20

我来回答

3个回答

热心网友 时间:2023-12-20 14:35

要做搜索的比较难

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class JNotePadUI extends JFrame {
private JMenuItem menuOpen;
private JMenuItem menuSave;
private JMenuItem menuSaveAs;
private JMenuItem menuClose;

private JMenu editMenu;
private JMenuItem menuCut;
private JMenuItem menuCopy;
private JMenuItem menuPaste;

private JMenuItem menuAbout;

private JTextArea textArea;
private JLabel stateBar;
private JFileChooser fileChooser;

private JPopupMenu popUpMenu;

public JNotePadUI() {
super("新建文本文件");
setUpUIComponent();
setUpEventListener();
setVisible(true);
}

private void setUpUIComponent() {
setSize(640, 480);

// 菜单栏
JMenuBar menuBar = new JMenuBar();

// 设置「文件」菜单
JMenu fileMenu = new JMenu("文件");
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_Q,
InputEvent.CTRL_MASK));

fileMenu.add(menuOpen);
fileMenu.addSeparator(); // 分隔线
fileMenu.add(menuSave);
fileMenu.add(menuSaveAs);
fileMenu.addSeparator(); // 分隔线
fileMenu.add(menuClose);

// 设置「编辑」菜单
JMenu editMenu = new JMenu("编辑");
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("关于");
menuAbout = new JMenuItem("关于JNotePad");
aboutMenu.add(menuAbout);

menuBar.add(fileMenu);
menuBar.add(editMenu);
menuBar.add(aboutMenu);

setJMenuBar(menuBar);

// 文字编辑区域
textArea = new JTextArea();
textArea.setFont(new Font("宋体", Font.PLAIN, 16));
textArea.setLineWrap(true);
JScrollPane panel = new JScrollPane(textArea,
ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);

Container contentPane = getContentPane();
contentPane.add(panel, BorderLayout.CENTER);

// 状态栏
stateBar = new JLabel("未修改");
stateBar.setHorizontalAlignment(SwingConstants.LEFT);
stateBar.setBorder(
BorderFactory.createEtchedBorder());
contentPane.add(stateBar, BorderLayout.SOUTH);

popUpMenu = editMenu.getPopupMenu();
fileChooser = new JFileChooser();
}

private void setUpEventListener() {
// 按下窗口关闭钮事件处理
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();
}
}
);

// 菜单 - 关于
menuAbout.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 显示对话框
JOptionPane.showOptionDialog(null,
"程序名称:\n JNotePad \n" +
"程序设计:\n ???\n" +
"简介:\n 一个简单的文字编辑器\n",
"关于JNotePad",
JOptionPane.DEFAULT_OPTION,
JOptionPane.INFORMATION_MESSAGE,
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);
}
}
);
}

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;
}
}
}
private boolean isCurrentFileSaved() {
if(stateBar.getText().equals("未修改")) {
return true;
}
else {
return false;
}
}
private void open() {
// fileChooser 是 JFileChooser 的实例
// 显示文件选取的对话框
int option = fileChooser.showDialog(null, null);

// 使用者按下确认键
if(option == JFileChooser.APPROVE_OPTION) {
/*
TODO: 添加读取文件的代码
*/
}
}
private void saveFile() {
/*
TODO: 添加保存文件的代码
*/
}

private void saveFileAs() {
/*
TODO: 添加另存为的代码
*/
}

private void closeFile() {
// 是否已保存文件
if(isCurrentFileSaved()) {
// 释放窗口资源,而后关闭程序
dispose();
}
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:
dispose();
}
}
}

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().setVisible(true);
}
}

热心网友 时间:2023-12-20 14:35

http://www.jedit.org/
JEDIT是一个完全JAVA开发的开源的文本编辑器,
功能很强的,类似与EditPlus,

http://www.jedit.org/index.php?page=download
及提供程序下载,
也提供源代码的下载。

热心网友 时间:2023-12-20 14:36

qq里查收吧!

才子_辉祝您愉快!
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怎样喷香水留香更持久?有哪些技巧? 有哪些方法让香水持久度更长一些? 怎样喷香水比较持久? 如何喷香水能使味道更持久? 败北是什么梗 湖南第一师范学院生活开销 赣州博沃新能源科技有限公司怎么样? 在湖南第一师范学院读书需要支出哪些费用 江西信丰恒隆麦饭石酒业有限公司公司荣誉 信丰县资源特点 简述索绪尔的结构主义语言观 用java设计一个电子记事本,要含保存,新建等基本功能,用EditPlus或Utredit,最好附带实验结果 户口不是镇江市的可以办老年公交卡吗? 如何用java一步步编出一个记事本程序 镇江市公交卡究竟怎么算钱? 镇江市丹徒区办老年公交卡在什么地方办?丹徒区老年公交卡在那里办,带上老年人的身份证代办可不可以?_百度问一问 镇江市丹徒区三山镇这边有没有充值公交卡的地方 java电子记事本的设计与实现 镇江的公交卡能在南京充值吗?是宁镇扬通用的那个江苏省公交一卡通 java记事本程序的设计与实现应该用什么设计模式写(两个及以上) 镇江丹徒新区公交IC卡充值点在什么地方? 镇江公交卡办理地点 镇江市公交卡在哪里办? mac 怎么将已经创建的分区删除回到最初的样子 住房公积金交了刚好一年,中间停了一年,今天重新交了,不过才交两个月。 住房公积金中间断了怎么办 住房公积金中断了怎么办 猴年的男宝宝姓余起什么名字好 有关新加坡绿卡问题 如何办理新加坡绿卡 对未学会言语符号儿童的训练是怎样的? 用java编写记事本程序,可以实现新建、打开、保存、退出、复制、粘贴、剪切、全选。 玫瑰花枸杞红枣泡茶,黑芝麻核桃枸杞能一起吃吗 黑芝麻糊里能放枸杞和红枣吗 普洱茶和黑芝麻枸杞红枣泡水可以? 黑芝麻红枣枸杞西洋参一起泡水喝有没有坏处 5年前有一个公司股份转让给了公司同事,转让完本人与该公司没任何关系。转让时? 股东股权转让后是否还承担公司债务 公司股权变更后,原股权人还与公司有关系吗? 公司转让出去后,原法人还对公司有什么责任么 我是公司的股东,我全部股份转让给法人 做了工商变更。请问之前以公司名义的贷款 变更后我还有责任吗? 淘米水泡白萝卜可以浇花? 萝卜叶子怎么做泡菜 能把windows装有u盘里吗 在EXCEL中将一个单元格(插入两条斜线)分为三部分,如何在这三部 电脑应用程序无法启动,因为应用程序的并行配置不正确 为什么我插入移动硬盘,但是在我的电脑里显示不出“可移动盘”啊 早上起来耳朵嗡嗡响,有回声是怎么回事 现代企业质量管理的三大目标是什么 企业的终极目标应该是什么