diff --git a/.classpath b/.classpath
deleted file mode 100644
index ac9ce57c2f4d3a99eb1868e101f3060156474663..0000000000000000000000000000000000000000
--- a/.classpath
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index ae3c1726048cd06b9a143e0376ed46dd9b9a8d53..0000000000000000000000000000000000000000
--- a/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/bin/
diff --git a/.project b/.project
deleted file mode 100644
index b7e8a74e9dd98bfb5b42b70cd6033510d6823948..0000000000000000000000000000000000000000
--- a/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
- java2022spring
-
-
-
-
-
- org.eclipse.jdt.core.javabuilder
-
-
-
-
-
- org.eclipse.jdt.core.javanature
-
-
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index dbc27c5dc60ef7094a88953087ea0294b6c44a38..0000000000000000000000000000000000000000
--- a/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,14 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=17
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=17
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
-org.eclipse.jdt.core.compiler.release=enabled
-org.eclipse.jdt.core.compiler.source=17
diff --git a/readme.md b/readme.md
deleted file mode 100644
index 4af16add33b576d095308a1888db35774618715d..0000000000000000000000000000000000000000
--- a/readme.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# ¿ÆÑ§¼ÆËãÆ÷
-0103 ÕÅÈý
\ No newline at end of file
diff --git a/src/java2022spring/Test.java b/src/java2022spring/Test.java
deleted file mode 100644
index 24deb29bfc0e5f50fdedcd21b504e77b529d48b6..0000000000000000000000000000000000000000
--- a/src/java2022spring/Test.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package java2022spring;
-
-public class Test {
- public static void main(String[] args) {
- System.out.println("Hello world!");
- }
-}
diff --git a/untitled/src/NotePad.java b/untitled/src/NotePad.java
new file mode 100644
index 0000000000000000000000000000000000000000..d847e570979b08acb1aed418b52c3fed9d4bd768
--- /dev/null
+++ b/untitled/src/NotePad.java
@@ -0,0 +1,420 @@
+import javax.imageio.stream.ImageInputStream;
+import javax.swing.*;
+import javax.swing.undo.UndoManager;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.InputEvent;
+import java.awt.event.KeyEvent;
+import java.io.File;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.Scanner;
+
+public class NotePad {
+ //先把记事本上,所需è¦çš„å„个组件创建出æ¥ã€‚
+ static int a=16;
+ static String b=" ";
+ JFrame f=new JFrame("简易记事本");
+ JTextArea jta=new JTextArea();
+ JMenuBar jMenuBar=new JMenuBar();
+ JMenu fileMenu=new JMenu("文件");
+ JMenu editMenu=new JMenu("编辑");
+ JMenu formatMenu=new JMenu("æ ¼å¼");
+ JMenu lookMenu=new JMenu("查看");
+ JMenu helpMenu=new JMenu("帮助");
+ JMenu fontMenu=new JMenu("å—体设置");
+ JMenuItem xinJian=new JMenuItem("新建");
+ JMenuItem daKai=new JMenuItem("打开");
+ JMenuItem baoChun=new JMenuItem("ä¿å˜");
+ JMenuItem linChunWei=new JMenuItem("å¦å˜ä¸º");
+ JMenuItem tuiChu=new JMenuItem("退出");
+ JMenuItem cheXiao=new JMenuItem("撤销");
+ JMenuItem jianQie=new JMenuItem("剪切");
+ JMenuItem fuZhi=new JMenuItem("å¤åˆ¶");
+ JMenuItem zhanTie=new JMenuItem("粘贴");
+ JMenuItem shanChu=new JMenuItem("åˆ é™¤");
+ JMenuItem quanXuan=new JMenuItem("全选");
+ JMenuItem cheXiao1=new JMenuItem("撤销");
+ JMenuItem jianQie1=new JMenuItem("剪切");
+ JMenuItem fuZhi1=new JMenuItem("å¤åˆ¶");
+ JMenuItem zhanTie1=new JMenuItem("粘贴");
+ JMenuItem shanChu1=new JMenuItem("åˆ é™¤");
+ JMenuItem quanXuan1=new JMenuItem("全选");
+ JMenuItem ziTiXuanZhe=new JMenuItem("å—体选择");
+ JMenuItem ziTiYanSe=new JMenuItem("å—体颜色");
+ JMenuItem ziTiDaXiao=new JMenuItem("å—体大å°");
+ JComboBox box=new JComboBox<>();
+ JMenuItem chaKanBangZhu=new JMenuItem("查看帮助");
+ JMenuItem guanYuJiShiBen=new JMenuItem("关于记事本");
+ JCheckBoxMenuItem ziDong=new JCheckBoxMenuItem("自动æ¢è¡Œ",true);
+ JCheckBoxMenuItem zhuangTaiLan=new JCheckBoxMenuItem("çŠ¶æ€æ ",true);
+ JLabel label1=new JLabel(" UTF-8");
+ JPopupMenu jPopupMenu=new JPopupMenu();
+ JFileChooser chooser;
+ //创建撤销资æºç®¡ç†å™¨
+ UndoManager Undo=new UndoManager();
+ File file;
+ //è‡ªå¦æ–‡æœ¬æ»¤è¿‡å™¨
+ //这里属于应用别人的代ç 还没å¦å¾—很精通文件过滤器
+ private class filter extends javax.swing.filechooser.FileFilter
+
+ {
+ public boolean accept(File file) {
+ String name=file.getName();
+ name.toLowerCase();
+ if(name.endsWith(".txt")||file.isDirectory())
+ return true;
+ else return false;
+ }
+
+ public String getDescription()
+ {
+ return ".txt";
+ }
+ }
+
+
+ public void init(){
+ //组装视图,实现记事本的编程逻辑,部分编程
+ /*1从å°åˆ°å¤§ç»„装一些组件,然åŽå†åœ¨ç›¸åº”的组件里é¢ï¼Œæ·»åŠ äº‹ä»¶ç›‘å¬å™¨ï¼Œå®Œæˆç›‘å¬å·¥ä½œ*/
+ //1.1å®Œæˆæ–‡ä»¶èœå•的组件的组装与实现。
+ //1.1.1 â€æ–°å»ºâ€œçš„itemï¼›
+ xinJian.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_DOWN_MASK));//ä¸ºé€‰é¡¹æ·»åŠ ä¸€äº›å¿«æ·é”®ã€‚
+ fileMenu.add(xinJian);
+ xinJian.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ jta.setText("");
+ }
+ });
+ //1.1.2 “打开â€çš„item
+ fileMenu.add(daKai);
+ daKai.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_DOWN_MASK));
+ daKai.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+
+ try{
+ String s="";//检查出,用一个sæ¥è®°å½•获å–fileçš„å称,然åŽï¼Œå†æŠŠè¿™ä¸ªåç§°ä¼ åˆ°è®°äº‹æœ¬çª—å£ä½œä¸ºtitle
+ chooser=new JFileChooser();
+ chooser.setFileFilter(new filter());//å‚考代ç ,自己模仿写的
+ chooser.setCurrentDirectory(new File("."));
+ chooser.showOpenDialog(f);
+ file=chooser.getSelectedFile();
+ s=file.getName();
+ f.setTitle(s);
+ int length=(int)file.length();
+ FileReader fr=new FileReader(file);
+ char[] ch=new char[length];
+ fr.read(ch);
+ s=new String(ch);
+ jta.setText(s.trim());}
+ catch(Exception exe){}
+
+ }
+
+ });
+ //1.1.3 ä¿å˜æ–‡ä»¶çš„选项添åŠ
+ fileMenu.add(baoChun);
+ baoChun.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_DOWN_MASK));
+ baoChun.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ if(file==null)try{
+ chooser=new JFileChooser();
+ chooser.setFileFilter(new filter());
+ chooser.setCurrentDirectory(new File("."));
+ int showSaveDialog=chooser.showSaveDialog(null);
+ if(showSaveDialog==chooser.APPROVE_OPTION)
+ { File file = chooser.getSelectedFile();;
+ file.createNewFile();
+ FileWriter fw=new FileWriter(file);
+ fw.write(jta.getText());
+ fw.close();
+ }
+ }
+ catch(Exception ece){}
+ else try{
+ FileWriter fw=new FileWriter(file);
+ fw.write(jta.getText());
+ fw.close();
+ }
+ catch(Exception ece){}
+ }
+ });
+ //1.1.4 å¦å˜ä¸ºé€‰é¡¹çš„æ·»åŠ (
+ fileMenu.add(linChunWei);
+ linChunWei.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, InputEvent.CTRL_DOWN_MASK));
+ linChunWei.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ chooser=new JFileChooser();
+ chooser.setCurrentDirectory(new File("."));
+ try{
+ String s="";
+ if(file==null) {
+ File file = chooser.getSelectedFile();
+ }
+ else {
+ s=file.getName();
+ chooser.setSelectedFile(new File(s));
+ }
+ chooser.setFileFilter(new filter());
+ int saveDialog=chooser.showSaveDialog(null);
+ if(saveDialog==chooser.APPROVE_OPTION)
+ { if(file!=null) file.delete();
+ File file = chooser.getSelectedFile();
+ file.createNewFile();
+ FileWriter fw=new FileWriter(file);
+ fw.write(jta.getText());
+ fw.close();
+ }
+ }
+ catch(Exception ece){}
+ }
+ });
+ //1.1.5,退出选项的一个添åŠ
+ fileMenu.add(tuiChu);
+ tuiChu.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ System.exit(0);
+ }
+ });
+ //1.2完æˆç¼–辑èœå•项的组装和逻辑实现
+ //1.2.1 撤销选项的æ“作
+ editMenu.add(cheXiao);
+ editMenu.addSeparator();
+ cheXiao.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,InputEvent.CTRL_DOWN_MASK));
+ jta.getDocument().addUndoableEditListener(Undo);
+ cheXiao.addActionListener(new ActionListener () {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ if (Undo.canUndo()){
+ Undo.undo();
+ }
+ }
+ });
+ //1.2.2 剪切选项的æ“作
+ editMenu.add(jianQie);
+ jianQie.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_DOWN_MASK));
+ jianQie.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ jta.cut();
+ }
+ });
+ //1.2.3 å¤åˆ¶çš„选项的一个æ“作
+ editMenu.add(fuZhi);
+ fuZhi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_DOWN_MASK));
+ fuZhi.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ jta.copy();
+ }
+ });
+ //1.2.3 ç²˜è´´çš„é€‰é¡¹çš„ä¸€ä¸ªæ·»åŠ æ“作
+ editMenu.add(zhanTie);
+ zhanTie.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_DOWN_MASK));
+ zhanTie.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ jta.paste();
+ }
+ });
+ //1.2.4 åˆ é™¤é€‰é¡¹çš„ä¸€ä¸ªæ·»åŠ æ“作
+ editMenu.add(shanChu);
+ shanChu.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D,InputEvent.CTRL_DOWN_MASK));
+ shanChu.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ jta.replaceRange("",jta.getSelectionStart(),jta.getSelectionEnd());
+ }
+ });
+ //1.2.5 全选 é€‰é¡¹çš„ä¸€ä¸ªæ·»åŠ æ“作
+ editMenu.addSeparator();
+ editMenu.add(quanXuan);
+ quanXuan.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_DOWN_MASK));
+ quanXuan.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ jta.selectAll();
+ }
+ });
+ //1.2çš„å³é”®å¿«æ·èœå•
+ //1.2.1 撤销选项的æ“作
+ jPopupMenu.add(cheXiao1);
+ jPopupMenu.addSeparator();
+ cheXiao1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,InputEvent.CTRL_DOWN_MASK));
+ cheXiao1.addActionListener(new ActionListener () {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ if (Undo.canUndo()){
+ Undo.undo();
+ }
+ }
+ });
+ //1.2.2 剪切选项的æ“作
+ jPopupMenu.add(jianQie1);
+ jianQie1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_DOWN_MASK));
+ jianQie1.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ jta.cut();
+ }
+ });
+ //1.2.3 å¤åˆ¶çš„选项的一个æ“作
+ jPopupMenu.add(fuZhi1);
+ fuZhi1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_DOWN_MASK));
+ fuZhi1.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ jta.copy();
+ }
+ });
+ //1.2.3 ç²˜è´´çš„é€‰é¡¹çš„ä¸€ä¸ªæ·»åŠ æ“作
+ jPopupMenu.add(zhanTie1);
+ zhanTie1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_DOWN_MASK));
+ zhanTie1.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ jta.paste();
+ }
+ });
+ //1.2.4 åˆ é™¤é€‰é¡¹çš„ä¸€ä¸ªæ·»åŠ æ“作
+ jPopupMenu.add(shanChu1);
+ shanChu1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D,InputEvent.CTRL_DOWN_MASK));
+ shanChu1.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ jta.replaceRange("",jta.getSelectionStart(),jta.getSelectionEnd());
+ }
+ });
+ //1.2.5 全选 é€‰é¡¹çš„ä¸€ä¸ªæ·»åŠ æ“作
+ jPopupMenu.addSeparator();
+ jPopupMenu.add(quanXuan1);
+ quanXuan1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_DOWN_MASK));
+ quanXuan1.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ jta.selectAll();
+ }
+ });
+ jta.setComponentPopupMenu(jPopupMenu);
+ //1.3 æ ¼å¼èœå•æ çš„ç»„ä»¶æ·»åŠ å’Œé€»è¾‘å®žçŽ°
+ formatMenu.add(ziDong);
+ ziDong.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W,InputEvent.CTRL_DOWN_MASK));
+ ziDong.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ if(ziDong.getState()){
+ jta.setLineWrap(true);
+ }else
+ {
+ jta.setLineWrap(false);
+ }
+ }
+ });
+ //在èœå•项目里å†è®¾ç½®ä¸€ä¸ªèœå•ï¼Œå˜æ”¾å—体设置的两个组件æ“作。
+ fontMenu.add(ziTiXuanZhe);//æ·»åŠ å—体选择的èœå•项
+ ziTiXuanZhe.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ GraphicsEnvironment get = GraphicsEnvironment.getLocalGraphicsEnvironment();
+ JList ziTiNames = new JList(get.getAvailableFontFamilyNames());//获å–å¯ä»¥æ›´æ¢å—体的åå•
+ int isShow = JOptionPane.showConfirmDialog(f, new JScrollPane(ziTiNames),"选择å—体",JOptionPane.OK_CANCEL_OPTION);//å¾€å¯¹è¯æ¡†é‡Œæ·»åŠ å—体列表,以å‚考选择,返回int类型与ok_OPTION 比对。
+ Object selectedZiTi = ziTiNames.getSelectedValue();
+ b=ziTiNames.getSelectedValue().toString();
+ if (isShow == JOptionPane.OK_OPTION && selectedZiTi != null) {
+ jta.setFont(new Font(b, Font.PLAIN, a));
+ }
+ }
+ });
+ fontMenu.add(ziTiYanSe);
+ //å—体的颜色选择,利用JColorChooseræ¥å®žçŽ°ã€‚
+ ziTiYanSe.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ Color color = JColorChooser.showDialog(null, "æ–‡å—颜色选择", Color.WHITE);
+ jta.setForeground(color);
+ }
+ });
+ fontMenu.add(ziTiDaXiao);
+ //å—体大å°çš„选择
+ for (int i = 1; i <100 ; i++) {
+ box.addItem(i+"");
+ }
+ ziTiDaXiao.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ int isShow = JOptionPane.showConfirmDialog(f, box,"å—体大å°",JOptionPane.OK_CANCEL_OPTION);
+ Object selectedZiTi = box.getSelectedItem();
+ a=Integer.parseInt(selectedZiTi.toString());
+ if(isShow == JOptionPane.OK_OPTION && selectedZiTi != null){
+ jta.setFont(new Font(b,Font.PLAIN,a));
+ }
+ }
+ });
+
+ formatMenu.add(fontMenu);
+
+ //1.4实现完æˆå¸®åŠ©èœå•的关于记事本的组件
+ helpMenu.add(chaKanBangZhu);
+ helpMenu.add(guanYuJiShiBen);
+ guanYuJiShiBen.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ JOptionPane.showMessageDialog(f,"《java2022年课设》\n作业完æˆè€…:冯铿远\n授课è€å¸ˆï¼šå´æ˜¥èƒ¤\nå®Œæˆæ—¶é—´ï¼š2022å¹´6月","关于",JOptionPane.PLAIN_MESSAGE);
+ }
+ });
+ chaKanBangZhu.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ JOptionPane.showMessageDialog(f,"本记事本å¯ä»¥ä½¿ç”¨å¿«æ·é”®ç‰è¿›è¡Œç›¸åº”çš„æ“作","帮助",JOptionPane.PLAIN_MESSAGE);
+ }
+ });
+
+ //1.5 实现查看èœå•
+ lookMenu.add(zhuangTaiLan);
+ f.add(label1,BorderLayout.SOUTH);
+ zhuangTaiLan.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ if(zhuangTaiLan.getState()){
+ f.add(label1,BorderLayout.SOUTH);
+ label1.setVisible(true);
+ }
+ else {
+ label1.setVisible(false);
+ }
+ }
+ });
+ /*对文本区域设置一下想è¦çš„功能*/
+ f.setBounds(250,250,800,550);
+ f.setJMenuBar(jMenuBar);
+ jta.setFont(new Font("宋体",Font.PLAIN,12));
+ jta.setCaretColor(Color.BLACK);
+ jta.setSelectedTextColor(Color.WHITE);
+ jta.setSelectionColor(Color.GRAY);
+ jta.setMargin(new Insets(3, 5, 3, 5));
+ jta.setWrapStyleWord(true);
+ jta.setDragEnabled(true);
+ JScrollPane scrollPane=new JScrollPane(jta);//æ·»åŠ ä¸€ä¸ªæ»šåŠ¨æ¡ï¼Œåœ¨å¿…è¦çš„æ—¶å€™å‡ºçŽ°æ»šåŠ¨æ¡
+ //以下先完善代ç ,对部分功能进行测试
+ jMenuBar.add(fileMenu);
+ jMenuBar.add(editMenu);
+ jMenuBar.add(formatMenu);
+ jMenuBar.add(lookMenu);
+ jMenuBar.add(helpMenu);
+ f.add(scrollPane);
+ f.setResizable(true);
+ f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+ f.setVisible(true);
+ }
+
+ public static void main(String[] args) {
+ new NotePad().init();
+ }
+}
diff --git "a/untitled/\350\256\276\350\256\241\346\200\247\345\256\236\351\252\214.iml" "b/untitled/\350\256\276\350\256\241\346\200\247\345\256\236\351\252\214.iml"
new file mode 100644
index 0000000000000000000000000000000000000000..6db0c464af6419e65c295cc9408a43279d15e30a
--- /dev/null
+++ "b/untitled/\350\256\276\350\256\241\346\200\247\345\256\236\351\252\214.iml"
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file