notepad.java
来自「主要是对于JAVA的编程的基本语言 希望能够帮得上你。」· Java 代码 · 共 640 行 · 第 1/2 页
JAVA
640 行
package swing;
import java.awt.Color;
import java.awt.Font;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBoxMenuItem;
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.JPanel;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JToolBar;
import javax.swing.ScrollPaneConstants;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.text.Document;
/**
* Title: Notepad类<br>
* Description: Swing简易记事本,能创建、打开和保存文本文件,
* 具有剪切、复制和粘贴功能,能设置字体颜色以及字号<br>
* Copyright:(c)2007 www.luzhou.net<br>
* Company: 泸州职业技术学院电信系
* @author 华卫
* @version 1.00
*/
public class Notepad extends JFrame{
/**
* 变量及常量定义部分
*/
//定义内容面板
JPanel panel=(JPanel) getContentPane();
//定义文本区
JTextArea txaNote=new JTextArea(10,60);
//定义滚动面板
JScrollPane scrollPane=new JScrollPane(txaNote,
ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
//定义标签
JLabel lblStatusbar=new JLabel("【JAVA语言程序设计】教学示例程序_授课教师:华卫");
//定义图标
ImageIcon imgNew=new ImageIcon("swing/new.gif");
ImageIcon imgOpen=new ImageIcon("swing/open.gif");
ImageIcon imgSave=new ImageIcon("swing/save.gif");
ImageIcon imgCut=new ImageIcon("swing/cut.gif");
ImageIcon imgCopy=new ImageIcon("swing/copy.gif");
ImageIcon imgPaste=new ImageIcon("swing/paste.gif");
//定义工具栏
JToolBar toolbar=new JToolBar();
JButton btnNew=new JButton(imgNew);
JButton btnOpen=new JButton(imgOpen);
JButton btnSave=new JButton(imgSave);
JButton btnCut=new JButton(imgCut);
JButton btnCopy=new JButton(imgCopy);
JButton btnPaste=new JButton(imgPaste);
//定义菜单栏
JMenuBar mnbNote=new JMenuBar();
//定义文件菜单
JMenu mnuFile=new JMenu("文件(F)");
JMenuItem mniNew=new JMenuItem("新建",imgNew);
JMenuItem mniOpen=new JMenuItem("打开",imgOpen);
JMenuItem mniSave=new JMenuItem("保存",imgSave);
JMenuItem mniExit=new JMenuItem("退出");
//定义编辑菜单
JMenu mnuEdit=new JMenu("编辑(E)");
JMenuItem mniCut=new JMenuItem("剪切",imgCut);
JMenuItem mniCopy=new JMenuItem("复制",imgCopy);
JMenuItem mniPaste=new JMenuItem("粘贴",imgPaste);
JMenuItem mniDelete=new JMenuItem("删除");
//定义设置菜单
JMenu mnuSet=new JMenu("设置(S)");
JMenu mnuForeColor=new JMenu("前景色");
ButtonGroup groupForeColor=new ButtonGroup();
JRadioButtonMenuItem rmiBlack=new JRadioButtonMenuItem("黑色",true);
JRadioButtonMenuItem rmiRed=new JRadioButtonMenuItem("红色",false);
JRadioButtonMenuItem rmiBlue=new JRadioButtonMenuItem("蓝色",false);
JMenu mnuFontName=new JMenu("字体");
ButtonGroup groupFontName=new ButtonGroup();
JRadioButtonMenuItem rmiHT=new JRadioButtonMenuItem("黑体",true);
JRadioButtonMenuItem rmiST=new JRadioButtonMenuItem("宋体",false);
JRadioButtonMenuItem rmiLS=new JRadioButtonMenuItem("隶书",false);
JMenu mnuFontSize=new JMenu("字号");
ButtonGroup groupFontSize=new ButtonGroup();
JRadioButtonMenuItem rmiBig=new JRadioButtonMenuItem("大号",true);
JRadioButtonMenuItem rmiMiddle=new JRadioButtonMenuItem("中号",false);
JRadioButtonMenuItem rmiSmall=new JRadioButtonMenuItem("小号",false);
JCheckBoxMenuItem cmiWrap=new JCheckBoxMenuItem("自动换行",true);
//定义帮助菜单
JMenu mnuHelp=new JMenu("帮助(H)");
JMenuItem mniHelp=new JMenuItem("帮助");
JMenuItem mniAbout=new JMenuItem("关于");
//定义文件选择器
final JFileChooser fileChooser = new JFileChooser();
//定义文件名
String strFileName;
//定义存放文件内容的字符串
String strFileContent;
//定义系统剪贴板
Clipboard clipBoard=Toolkit.getDefaultToolkit().getSystemClipboard();
//定义屏幕宽度和高度
int screenWidth=(int)Toolkit.getDefaultToolkit().getScreenSize().getWidth();
int screenHeight=(int)Toolkit.getDefaultToolkit().getScreenSize().getHeight();
//定义文件是否保存的标志变量
boolean isSaved=true;
//定义文档
Document document=txaNote.getDocument();
public static void main(String[] args) {
new Notepad("记事本");
}
//构造方法
public Notepad(String string){
/**
* 设计用户界面:在窗口里设置菜单,在内容面板里添加非菜单组件,并设置其属性
*/
//调用父类构造方法,设置窗口标题
super(string);
//往内容面板里添加滚动面板
panel.add(scrollPane);
//往内容面板里添加标签
panel.add(lblStatusbar,"South");
//往内容面板里添加工具栏
panel.add(toolbar,"North");
toolbar.add(btnNew);
toolbar.add(btnOpen);
toolbar.add(btnSave);
toolbar.add(btnCut);
toolbar.add(btnCopy);
toolbar.add(btnPaste);
//在窗口里设置菜单栏
setJMenuBar(mnbNote);
//添加文件菜单
mnbNote.add(mnuFile);
mnuFile.setMnemonic(KeyEvent.VK_F);
mnuFile.add(mniNew);
mnuFile.add(mniOpen);
mnuFile.add(mniSave);
mnuFile.addSeparator();
mnuFile.add(mniExit);
//添加编辑菜单
mnbNote.add(mnuEdit);
mnuEdit.setMnemonic(KeyEvent.VK_E);
mnuEdit.add(mniCut);
mnuEdit.add(mniCopy);
mnuEdit.add(mniPaste);
mnuEdit.addSeparator();
mnuEdit.add(mniDelete);
//添加设置菜单
mnbNote.add(mnuSet);
mnuSet.setMnemonic(KeyEvent.VK_S);
//前景色
mnuSet.add(mnuForeColor);
mnuForeColor.add(rmiBlack);
mnuForeColor.add(rmiRed);
mnuForeColor.add(rmiBlue);
groupForeColor.add(rmiBlack);
groupForeColor.add(rmiRed);
groupForeColor.add(rmiBlue);
//字体
mnuSet.add(mnuFontName);
mnuFontName.add(rmiHT);
mnuFontName.add(rmiST);
mnuFontName.add(rmiLS);
groupFontName.add(rmiHT);
groupFontName.add(rmiST);
groupFontName.add(rmiLS);
//字号
mnuSet.add(mnuFontSize);
mnuFontSize.add(rmiBig);
mnuFontSize.add(rmiMiddle);
mnuFontSize.add(rmiSmall);
groupFontSize.add(rmiBig);
groupFontSize.add(rmiMiddle);
groupFontSize.add(rmiSmall);
//自动换行
mnuSet.addSeparator();
mnuSet.add(cmiWrap);
//添加帮助菜单
mnbNote.add(mnuHelp);
mnuHelp.setMnemonic(KeyEvent.VK_H);
mnuHelp.add(mniHelp);
mnuHelp.add(mniAbout);
//设置窗口属性
setSize(800,600);
setLocation((screenWidth-getWidth())/2, (screenHeight-getHeight())/2); //让窗口在屏幕居中
//设置文本区属性
txaNote.setFont(new Font("黑体",Font.PLAIN,30));
txaNote.setLineWrap(true);
//设置窗口可见
setVisible(true);
/**
* 给组件注册监听器,并编写相应的事件处理程序
*/
//窗口关闭事件
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e) {
if(isSaved==false){
int choice=JOptionPane.showConfirmDialog(null, "文件已修改,您是否要保存文件?", "记事本", JOptionPane.YES_NO_OPTION);
if(choice==JOptionPane.YES_OPTION){
saveFile(); //保存文件
}else
System.exit(0); //退出系统
}else
System.exit(0); //退出系统
}
});
///////////////////////////////////////////////////////////////////////
//文本区中的鼠标运动事件
txaNote.addMouseMotionListener(new MouseMotionAdapter(){
public void mouseMoved(MouseEvent e) {
//判断文本区中是否选中了文本,以此决定“剪切”、“复制”和“删除”菜单项和工具按钮是否可用
if(txaNote.getSelectedText()==null){
mniCut.setEnabled(false);
mniCopy.setEnabled(false);
mniDelete.setEnabled(false);
btnCut.setEnabled(false);
btnCopy.setEnabled(false);
}else{
mniCut.setEnabled(true);
mniCopy.setEnabled(true);
mniDelete.setEnabled(true);
btnCut.setEnabled(true);
btnCopy.setEnabled(true);
}
//判断剪贴板里是否有内容,以此决定“粘贴”菜单项和工具按钮是否可用
Transferable contents=clipBoard.getContents(this); //从剪贴板获取可传输数据对象
if(contents==null){
mniPaste.setEnabled(false);
btnPaste.setEnabled(false);
}
else{
mniPaste.setEnabled(true);
btnPaste.setEnabled(true);
}
}
});
//文档内容发生变化事件
document.addDocumentListener(new DocumentListener(){
public void insertUpdate(DocumentEvent e) {
isSaved=false;
}
public void removeUpdate(DocumentEvent e) {
isSaved=false;
}
public void changedUpdate(DocumentEvent e) {
isSaved=false;
}
});
//////////////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?