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