diff --git a/README.md b/README.md index 40fc824a82f8ab822a979d81b19d7815da7cfdc8..d19b1e76b1ddb03c529fc0ed0383d3e0c63d943f 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,17 @@ -# 科学计算器 +# 文本编辑器 #### 系统目标 -简要介绍系统的用途 +实现记事本的部分功能 #### 基本功能 详细介绍系统各个模块的功能。 -1. xxxx -2. xxxx -3. xxxx +1.新建文件, 保存文件, 打开文件, 另存为。 +2.查找文本内容, 并且可以替换内容。 +3.剪切, 复制, 粘贴, 删除, 全选。 +4.自动换行, 更改字体 +5.打开关闭状态栏(可以显示当前字体, 字数等) +6.帮助 + #### 码云特技 diff --git a/src/img/1.jpg b/src/img/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a96bbc23fb04e3e6419f49f02bde8a2120b189cc Binary files /dev/null and b/src/img/1.jpg differ diff --git a/src/java2020spring/EditorFrame.java b/src/java2020spring/EditorFrame.java new file mode 100644 index 0000000000000000000000000000000000000000..3d4d3de2a07e841eb3569fd46db8aacf554be24f --- /dev/null +++ b/src/java2020spring/EditorFrame.java @@ -0,0 +1,300 @@ +package notepad; + +import javax.swing.undo.*; + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.FlowLayout; +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.InputEvent; +import java.awt.event.KeyEvent; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; + +import javax.swing.*; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; +import javax.swing.event.UndoableEditEvent; +import javax.swing.event.UndoableEditListener; +import javax.swing.text.Document; +import javax.swing.undo.UndoManager; + +public class EditorFrame extends JFrame implements ActionListener, DocumentListener { + // JFrame wenBen_JfrFrame; + JMenu wenBen_JMenu[] = new JMenu[5];// Ŀ¼˵ + JMenuBar wenben_Bar; + JPopupMenu jpopupMenu; + Toolkit toolkit = Toolkit.getDefaultToolkit(); + Clipboard clipBoard = toolkit.getSystemClipboard();// ϵͳа + UndoManager undo = new UndoManager(); + protected UndoableEditListener undoHandler = new UndoHandler(); + JTextArea textArea = new JTextArea(); + + JMenuItem jMenuItem[] = new JMenuItem[30]; + JLabel nowJlLabel = new JLabel();// ʾǰ״̬һǩ + JScrollPane JSP = new JScrollPane(textArea);// Ϊɹı + static int shurucishu = 0; + + EditorFrame() {// + // new FileDialog(this); + // this.add(textArea); + int windowWidth = 500; // ôڿ + int windowHeight = 500; // ôڸ + Toolkit kit = Toolkit.getDefaultToolkit(); // 幤߰ + Dimension screenSize = kit.getScreenSize(); // ȡĻijߴ + int screenWidth = screenSize.width; // ȡĻĿ + int screenHeight = screenSize.height; // ȡĻĸ + setBounds(screenWidth / 2 - windowWidth / 2, screenHeight / 2 - windowHeight / 2, 500, 500);//ôھʾ + setLayout(null); + jMenuItem[0] = new JMenuItem("(S)");// + jMenuItem[0].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK));//ӿݼ + // jMenuItem[0].addActionListener(this); + jMenuItem[1] = new JMenuItem("(O)..."); + jMenuItem[1].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK)); + // jMenuItem[1].addActionListener(this); + jMenuItem[2] = new JMenuItem("ɫ"); + jMenuItem[3] = new JMenuItem(""); + jMenuItem[4] = new JMenuItem("Զ"); + jMenuItem[5] = new JMenuItem(""); + jMenuItem[6] = new JMenuItem("״̬"); + jMenuItem[7] = new JMenuItem("ǰʱ"); + jMenuItem[8] = new JMenuItem("Ϊ(A)..."); + // jMenuItem[8].addActionListener(this); + jMenuItem[9] = new JMenuItem("鿴"); + jMenuItem[10] = new JMenuItem("˳(X)"); + jMenuItem[10].addActionListener(this); + jMenuItem[11] = new JMenuItem("(U)"); + jMenuItem[11].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z, InputEvent.CTRL_MASK)); + jMenuItem[11].addActionListener(this); + jMenuItem[11].setEnabled(false); + jMenuItem[12] = new JMenuItem("(T)"); + jMenuItem[12].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, InputEvent.CTRL_MASK)); + jMenuItem[12].addActionListener(this); + jMenuItem[13] = new JMenuItem("(C)"); + jMenuItem[13].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK)); + jMenuItem[13].addActionListener(this); + jMenuItem[14] = new JMenuItem("ճ(P)"); + jMenuItem[14].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.CTRL_MASK)); + jMenuItem[14].addActionListener(this); + jMenuItem[15] = new JMenuItem("ɾ(D)"); + jMenuItem[15].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0)); + jMenuItem[15].addActionListener(this); + // Ҽ˵ + jpopupMenu = new JPopupMenu(); + jMenuItem[16] = new JMenuItem("(U)"); + jMenuItem[17] = new JMenuItem("(T)"); + jMenuItem[18] = new JMenuItem("(C)"); + jMenuItem[19] = new JMenuItem("ճ(P)"); + jMenuItem[20] = new JMenuItem("ɾ(D)"); + jMenuItem[21] = new JMenuItem("ȫѡ(A)"); + + jMenuItem[16].setEnabled(false); + jMenuItem[22] = new JMenuItem("½(N)"); + jMenuItem[22].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_MASK)); + jMenuItem[22].addActionListener(this); + jMenuItem[23] = new JMenuItem(""); + jMenuItem[23].addActionListener(this); + + // Ҽ˵Ӳ˵ͷָ + for (int i = 16; i <= 21; i++) { + jpopupMenu.add(jMenuItem[i]); + // ı༭עҼ˵¼ + jMenuItem[i].addActionListener(this); + } + textArea.addMouseListener(new MouseAdapter() { + public void mousePressed(MouseEvent e) { + if (e.isPopupTrigger())// ش¼ǷΪƽ̨ĵ˵¼ + { + jpopupMenu.show(e.getComponent(), e.getX(), e.getY()); + } + checkMenuItemEnabled();// üУƣճɾȹܵĿ + textArea.requestFocus();// ༭ȡ + } + + public void mouseReleased(MouseEvent e) { + if (e.isPopupTrigger())// ش¼ǷΪƽ̨ĵ˵¼ + { + jpopupMenu.show(e.getComponent(), e.getX(), e.getY());// ߵռеλ XY ʾ˵ + } + checkMenuItemEnabled();// üУƣճɾȹܵĿ + textArea.requestFocus();// ༭ȡ + } + }); + textArea.setForeground(Color.black); + for (int i = 0; i < 10; i++) { + jMenuItem[i].addActionListener(this); + } + wenBen_JMenu[0] = new JMenu("ļ"); + wenBen_JMenu[1] = new JMenu("༭"); + wenBen_JMenu[2] = new JMenu("ʽ"); + wenBen_JMenu[3] = new JMenu("鿴"); + wenBen_JMenu[4] = new JMenu(""); + wenBen_JMenu[0].add(jMenuItem[22]); + // wenBen_JMenu[1].add(jMenuItem[23]); + for (int i = 0; i < wenBen_JMenu.length; i++) { + wenBen_JMenu[i].setPreferredSize(new Dimension(95, 20)); + } + wenBen_JMenu[0].add(jMenuItem[0]); + wenBen_JMenu[0].add(jMenuItem[1]); + wenBen_JMenu[1].add(jMenuItem[3]); + wenBen_JMenu[2].add(jMenuItem[4]); + wenBen_JMenu[2].add(jMenuItem[5]); + wenBen_JMenu[3].add(jMenuItem[6]); + // wenBen_JMenu[3].add(jMenuItem[7]); + wenBen_JMenu[0].add(jMenuItem[8]); + wenBen_JMenu[0].add(jMenuItem[10]); + wenBen_JMenu[4].add(jMenuItem[9]); + for (int i = 11; i <= 15; i++) + wenBen_JMenu[1].add(jMenuItem[i]); + wenben_Bar = new JMenuBar(); + wenben_Bar.setLayout(new FlowLayout()); + for (int i = 0; i < 5; i++) { + wenben_Bar.add(wenBen_JMenu[i]); + } + // JPasswordField jPasswordField=new JPasswordField("123"); + // System.out.println(jPasswordField.getText()); + // System.out.println(jPasswordField.getText()); + // add(wenben_Bar); + JPanel jPanel = new JPanel(); + jPanel.setBounds(0, -10, 500, 35); + jPanel.add(wenben_Bar); + jPanel.setLayout(new FlowLayout()); + textArea.setLineWrap(false); + textArea.setTabSize(4);// tab + Document document = textArea.getDocument(); + document.addDocumentListener(this); + JSP.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); // Զ + JSP.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);// Զ + JSP.setBounds(0, 30, 1920, 1080); + add(jPanel); + add(JSP); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + // validate(); + setVisible(true); + // nowJlLabel.setText("ǰΪ0 ǰСΪ 12 ǰΪ0"); + nowJlLabel.setVisible(true); + nowJlLabel.setBounds(30, 440, 500, 20); + nowJlLabel.setVisible(false); + add(nowJlLabel); + textArea.getDocument().addUndoableEditListener(undoHandler); + textArea.getDocument().addDocumentListener(this); + // this.add(youjian1); + } + + public void actionPerformed(ActionEvent e) { + String buttonString = e.getActionCommand(); + ItemChoice aChoice = new ItemChoice(buttonString, this, textArea, nowJlLabel, JSP); + // aChoice.a(); + aChoice.SearchName(); + if (buttonString == "½(N)") { + undo.discardAllEdits(); + jMenuItem[11].setEnabled(false); + jMenuItem[16].setEnabled(false); + } else if (buttonString == "(U)") { + textArea.requestFocus(); + if (undo.canUndo()) { + undo.undo(); + } + if (!undo.canUndo()) { + jMenuItem[11].setEnabled(false); + jMenuItem[16].setEnabled(false); + } + } else if (buttonString == "(T)") { + textArea.requestFocus(); + String text = textArea.getSelectedText(); + StringSelection selection = new StringSelection(text); + clipBoard.setContents(selection, null); + textArea.replaceRange("", textArea.getSelectionStart(), textArea.getSelectionEnd()); + checkMenuItemEnabled();// üУƣճɾܵĿ + } else if (buttonString == "(C)") { + textArea.requestFocus(); + String text = textArea.getSelectedText(); + StringSelection selection = new StringSelection(text); + clipBoard.setContents(selection, null); + checkMenuItemEnabled();// üУƣճɾܵĿ + } else if (buttonString == "ճ(P)") { + textArea.requestFocus(); + Transferable contents = clipBoard.getContents(this); + if (contents == null) + return; + String text = ""; + try { + text = (String) contents.getTransferData(DataFlavor.stringFlavor); + } catch (Exception exception) { + } + textArea.replaceRange(text, textArea.getSelectionStart(), textArea.getSelectionEnd()); + checkMenuItemEnabled(); + } else if (buttonString == "ɾ(D)") { + textArea.requestFocus(); + textArea.replaceRange("", textArea.getSelectionStart(), textArea.getSelectionEnd()); + checkMenuItemEnabled(); + } else if (buttonString == "ȫѡ(A)") { + textArea.selectAll(); + } + } + + @Override + public void insertUpdate(DocumentEvent e) { + ItemChoice dongTaiChange = new ItemChoice("", this, textArea, nowJlLabel, JSP); + dongTaiChange.ChangeZhuangtai(); + jMenuItem[16].setEnabled(true); + jMenuItem[11].setEnabled(true); + } + + @Override + public void removeUpdate(DocumentEvent e) { + ItemChoice dongTaiChange = new ItemChoice("", this, textArea, nowJlLabel, JSP); + dongTaiChange.ChangeZhuangtai(); + jMenuItem[16].setEnabled(true); + jMenuItem[11].setEnabled(true); + } + + @Override + public void changedUpdate(DocumentEvent e) { + ItemChoice dongTaiChange = new ItemChoice("", this, textArea, nowJlLabel, JSP); + dongTaiChange.ChangeZhuangtai(); + jMenuItem[16].setEnabled(true); + jMenuItem[11].setEnabled(true); + } + + public void checkMenuItemEnabled() { + String selectText = textArea.getSelectedText(); + if (selectText == null) { + jMenuItem[17].setEnabled(false); + jMenuItem[12].setEnabled(false); + jMenuItem[18].setEnabled(false); + jMenuItem[14].setEnabled(false); + jMenuItem[20].setEnabled(false); + jMenuItem[15].setEnabled(false); + } else { + jMenuItem[17].setEnabled(true); + jMenuItem[12].setEnabled(true); + jMenuItem[18].setEnabled(true); + jMenuItem[14].setEnabled(true); + jMenuItem[20].setEnabled(true); + jMenuItem[15].setEnabled(true); + } + // ճܿж + Transferable contents = clipBoard.getContents(this); + if (contents == null) { + jMenuItem[19].setEnabled(false); + jMenuItem[14].setEnabled(false); + } else { + jMenuItem[19].setEnabled(true); + jMenuItem[14].setEnabled(true); + } + } + +// + class UndoHandler implements UndoableEditListener { + public void undoableEditHappened(UndoableEditEvent uee) { + undo.addEdit(uee.getEdit()); + } + } +} diff --git a/src/java2020spring/FontDialog.java b/src/java2020spring/FontDialog.java new file mode 100644 index 0000000000000000000000000000000000000000..6c4327676de587fe29ef3891df45ede2b90ea174 --- /dev/null +++ b/src/java2020spring/FontDialog.java @@ -0,0 +1,102 @@ +package notepad; + +import java.awt.event.*; +import java.awt.*; +import javax.swing.*; + +@SuppressWarnings("serial") +public class FontDialog extends JDialog implements ItemListener, ActionListener { + Fontfamily fontFamilyNames; + static int fontsize = 12; // static״̬ + static String fontName = "";// + JComboBox fontNameList, fontsizeList; + JLabel label; + Font font; + JButton yes, cancel; + int pointx, pointy; + static int YES = 1, NO = 0; // static״̬ + int state = -1; + + FontDialog(JFrame f, int pointx, int pointy) { + super(f); + setTitle(""); + font = new Font("", Font.PLAIN, 12); + fontFamilyNames = new Fontfamily(); + setModal(true); + yes = new JButton("ȷ"); + cancel = new JButton("ȡ"); + yes.addActionListener(this); + cancel.addActionListener(this); + label = new JLabel("Ԥ", JLabel.CENTER); + fontNameList = new JComboBox(); + fontsizeList = new JComboBox(); + String name[] = fontFamilyNames.getFontName(); + fontNameList.addItem(""); + // ö + for (int k = 0; k < name.length; k++) + fontNameList.addItem(name[k]); + fontsizeList.addItem("С"); + // öٴС + for (int k = 8; k < 72; k = k + 2) + fontsizeList.addItem(new Integer(k)); + fontNameList.addItemListener(this); + fontsizeList.addItemListener(this); + JPanel pNorth = new JPanel(); + pNorth.setLayout(new GridLayout(1, 2)); + // fontNameList.setLocation(10, 10); + // fontsizeList.setLocation(30,0); + /* + * λ + */ + pNorth.add(fontNameList); + pNorth.add(fontsizeList); + add(pNorth, BorderLayout.NORTH); + add(label, BorderLayout.CENTER); + JPanel pSouth = new JPanel(); + pSouth.add(yes); + pSouth.add(cancel); + add(pSouth, BorderLayout.SOUTH); + setBounds(pointx + 100, pointy + 100, 280, 170); + setDefaultCloseOperation(DISPOSE_ON_CLOSE); + validate(); + } + + public void itemStateChanged(ItemEvent e) { + Integer m = null; + if (e.getSource() == fontNameList) { + fontName = (String) fontNameList.getSelectedItem(); + if (fontName != "") + font = new Font(fontName, Font.PLAIN, fontsize); + } else if (e.getSource() == fontsizeList) { + Object string = fontsizeList.getSelectedItem(); + m = (Integer) fontsizeList.getSelectedItem(); + if (string != "С") { + fontsize = m.intValue(); + font = new Font(fontName, Font.PLAIN, fontsize); + } + } + new ItemChoice(fontName, fontsize); + // itemChoice changeZhuangtai=new itemChoice(fontName,fontsize); + label.setFont(font); + label.repaint(); + validate(); + } + + public void actionPerformed(ActionEvent e) { + if (e.getSource() == yes) { + state = YES; + setVisible(false); + } else if (e.getSource() == cancel) { + state = NO; + setVisible(false); + } + } + + public int getState() { + return state; + } + + public Font getFont() { + return font; + } +} diff --git a/src/java2020spring/Fontfamily.java b/src/java2020spring/Fontfamily.java new file mode 100644 index 0000000000000000000000000000000000000000..91b8286a32ec0efe60b555bca8a5bfd42a6d2e8a --- /dev/null +++ b/src/java2020spring/Fontfamily.java @@ -0,0 +1,12 @@ +package notepad; + +import java.awt.GraphicsEnvironment; + +public class Fontfamily { + String allFontName[]; + public String[] getFontName() { + GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment(); + allFontName=ge.getAvailableFontFamilyNames(); + return allFontName; + } +} diff --git a/src/java2020spring/Helper.java b/src/java2020spring/Helper.java new file mode 100644 index 0000000000000000000000000000000000000000..41c9b44623f46ee773ada5ddf2727bbc9832d561 --- /dev/null +++ b/src/java2020spring/Helper.java @@ -0,0 +1,15 @@ +package notepad; + +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JTextArea; + + +public class Helper { + public Helper(JTextArea jTextArea,int pointx,int pointy) { + // TODO Auto-generated constructor stub + String string="1.״̬ʾǰС\n2.ҿԲѯҪѰҵַ滻\n"; + JOptionPane.showMessageDialog(null, string); + } +} diff --git a/src/java2020spring/ItemChoice.java b/src/java2020spring/ItemChoice.java new file mode 100644 index 0000000000000000000000000000000000000000..cc84886bc0c6f67c1367f8dee013740c5157148e --- /dev/null +++ b/src/java2020spring/ItemChoice.java @@ -0,0 +1,103 @@ +package notepad; + +import java.awt.Point; +import java.text.SimpleDateFormat; +import java.util.Date; + +import javax.swing.*; + +public class ItemChoice { + private EditorFrame frame; + private String itemstrString; + private JTextArea jTextArea; + private JLabel nowLabel; + private JScrollPane JSP;// ı + private ImageIcon imageIcon; + static String zitiName = "";// ǰ + static int zitiSize = 12;// ǰĴС + static boolean huangHang = true, zhuangTai = false;// ǷкǷʾǰ״̬ + int pointx, pointy; + + ItemChoice() { + // TODO Auto-generated constructor stub + } + + ItemChoice(String itemString, EditorFrame frame, JTextArea textArea, JLabel nowLabel, JScrollPane JSP) { + this.frame = frame; + this.itemstrString = itemString; + this.jTextArea = textArea; + this.nowLabel = nowLabel; + this.JSP = JSP; + Point point = frame.getLocation(); + this.pointx = point.x; + this.pointy = point.y; + } + + ItemChoice(String zitString, int zitiSize) { + // TODO Auto-generated constructor stub + this.zitiName = zitString; + this.zitiSize = zitiSize; + } + + public void SearchName() { + // TODO Auto-generated method stub + if (itemstrString == "(S)") { + int n = JOptionPane.showConfirmDialog(null, "ȷҪ", "棿", JOptionPane.YES_NO_OPTION); + if (n == 0) { + Save baoChun = new Save(jTextArea, pointx, pointy); + } + } else if (itemstrString == "Զ") { + jTextArea.setLineWrap(huangHang); + huangHang = !huangHang; + ChangeZhuangtai(); + } else if (itemstrString == "") { + FontDialog dialog = new FontDialog(frame, pointx, pointy); + dialog.setVisible(true); + if (dialog.getState() == FontDialog.YES) { + jTextArea.setFont(dialog.getFont()); + jTextArea.repaint(); + } else { + jTextArea.repaint(); + } + ChangeZhuangtai(); + } else if (itemstrString == "״̬") {// ı״̬ + zhuangTai = !zhuangTai; + if (zhuangTai) + JSP.setBounds(0, 30, 485, 410); + else { + JSP.setBounds(0, 30, 485, 432); + } + ChangeZhuangtai(); + // jlabelString.format(); + nowLabel.setVisible(zhuangTai); + } else if (itemstrString == "(O)...") { + OpenFile openFile = new OpenFile(jTextArea, pointx, pointy); + } else if (itemstrString == "") { + new Search(jTextArea, pointx, pointy); + } else if (itemstrString == "Ϊ(A)...") { + new SaveAs(jTextArea, pointx, pointy); + } else if (itemstrString == "鿴") { + new Helper(jTextArea, pointx, pointy); + } else if (itemstrString == "˳(X)") { + System.exit(0); + } else if (itemstrString == "½(N)") { + int k = JOptionPane.showConfirmDialog(null, "ǷҪΪ", "棿", JOptionPane.YES_NO_OPTION); + if (k == 0) { + // @SuppressWarnings("unused") + new SaveAs(jTextArea, pointx, pointy); + } + jTextArea.replaceRange("", 0, jTextArea.getText().length()); + } + + } + + // ı״̬ + public void ChangeZhuangtai() { + String textnumberString = new String(jTextArea.getText());// жٸ + int ziNumber = textnumberString.length(); + String jlabelString = new String(); + jlabelString = "壺" + zitiName + " С " + zitiSize + " " + ziNumber + " " + + jTextArea.getLineCount() + " ǷԶ: " + (!huangHang ? ("") : ""); + nowLabel.setText(jlabelString); + } +} diff --git a/src/java2020spring/MainClass.java b/src/java2020spring/MainClass.java new file mode 100644 index 0000000000000000000000000000000000000000..8de634472fcd73a4f70f806dc34573d5b5b3f446 --- /dev/null +++ b/src/java2020spring/MainClass.java @@ -0,0 +1,20 @@ +package notepad; + +import javax.swing.ImageIcon; +import javax.swing.UIManager; + +public class MainClass { + public static void main(String[] args) { + try { + javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");//设置外观 + } catch (Exception e) { + // TODO: handle exception + e.printStackTrace(); + } + EditorFrame kuangJia; + kuangJia = new EditorFrame(); + kuangJia.setTitle("Notepad");//设置标题 + ImageIcon imageIcon = new ImageIcon("src/img/1.jpg"); + kuangJia.setIconImage(imageIcon.getImage());//设置窗口图标 + } +} diff --git a/src/java2020spring/OpenFile.java b/src/java2020spring/OpenFile.java new file mode 100644 index 0000000000000000000000000000000000000000..dc46473313c20ea9eef92312299fcaf1882e6502 --- /dev/null +++ b/src/java2020spring/OpenFile.java @@ -0,0 +1,91 @@ +package notepad; + +import javax.sound.sampled.AudioFormat.Encoding; + + +import javax.swing.*; +import javax.swing.filechooser.FileFilter; + +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileReader; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.Scanner; + +public class OpenFile { + String pathString, filenameString, houzhuiString, qianzhuiString; + StringBuilder changStringBuilder; + boolean flag = true; + + OpenFile(JTextArea jTextArea, int pointx, int pointy) { + JFrame daKaiWenJian = new JFrame("ļ"); + daKaiWenJian.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); + daKaiWenJian.setLayout(new FlowLayout()); + JFileChooser jFileChooser = new JFileChooser(); + jFileChooser.setBounds(pointx + 100, pointy + 100, 500, 500); + JButton openButton = new JButton("ļ"); + daKaiWenJian.add(openButton); + // daKaiWenJian.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + daKaiWenJian.setBounds(pointx + 100, pointy + 100, 250, 150); + daKaiWenJian.setVisible(true); + openButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + // TODO Auto-generated method stub + int returnVal = jFileChooser.showOpenDialog(daKaiWenJian); + try { + File file = jFileChooser.getSelectedFile(); + if (file != null) { + pathString = file.getAbsolutePath(); + filenameString = file.getName(); + // JOptionPane.showMessageDialog(daKaiWenJian, pathString); + houzhuiString = filenameString.substring(filenameString.lastIndexOf(".") + 1); + qianzhuiString = pathString.substring(0, pathString.lastIndexOf("\\"));// ȡǰѡļ· + // System.out.println(qianzhuiString); + // System.out.println(System.getProperty("user.dir")); + if (!houzhuiString.equals("txt")) { + JOptionPane.showMessageDialog(daKaiWenJian, "ѡtxtļ"); + return; + } + String result = ""; + StringBuilder contentBuilder = new StringBuilder(); + try { + File file2 = new File(pathString); + // String fileEncodeString=Encoding.get + InputStream inputStream = new FileInputStream(file2); + InputStreamReader inputStreamReader = null; + if (qianzhuiString.equals(System.getProperty("user.dir"))) { + inputStreamReader = new InputStreamReader(inputStream);// ȡӸı + } + BufferedReader bufferedReader = new BufferedReader(inputStreamReader); + while ((result = bufferedReader.readLine()) != null) { + contentBuilder.append(result + '\n'); + } + bufferedReader.close(); + } catch (Exception e2) { + // TODO: handle exception + e2.printStackTrace(); + } + String str1 = contentBuilder.toString(); + jTextArea.selectAll(); + jTextArea.replaceRange("", jTextArea.getSelectionStart(), jTextArea.getSelectionEnd()); + jTextArea.append(str1); + daKaiWenJian.setVisible(false); + + } + } catch (Exception e1) { + // TODO: handle exception + e1.printStackTrace(); + } + + } + }); + + } + +} diff --git a/src/java2020spring/Save.java b/src/java2020spring/Save.java new file mode 100644 index 0000000000000000000000000000000000000000..95a18a6315e2b9c9753264a868721ceff27b7995 --- /dev/null +++ b/src/java2020spring/Save.java @@ -0,0 +1,82 @@ +package notepad; + +import java.awt.BorderLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; + +import javax.swing.*; + +public class Save { + JFrame documentNameFrame = new JFrame("ļ"); + File TextFile; + JTextField documentNameField = new JTextField(); + JButton sureChoice = new JButton("ȷ");// ѡǷ񴴽 + JLabel shuruJLabel = new JLabel("ļ:"); + private JTextArea jTextArea; + + Save(JTextArea jTextArea, int pointx, int pointy) { + this.jTextArea = jTextArea; + documentNameFrame.setLayout(null); + documentNameFrame.setBounds(pointx + 100, pointy + 100, 300, 150); + shuruJLabel.setBounds(50, 10, 70, 20); + documentNameField.setBounds(130, 10, 100, 20); + sureChoice.setBounds(112, 50, 70, 20); + documentNameFrame.add(shuruJLabel); + documentNameFrame.add(documentNameField); + documentNameFrame.add(sureChoice); + documentNameFrame.setVisible(true); + documentNameFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + sureChoice.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + // TODO Auto-generated method stub + CreateFile(); + } + }); + } + + public void CreateFile() { + String filenameString = documentNameField.getText(); + TextFile = new File(filenameString); + String basePath = System.getProperty("user.dir");// ȡǰĿ¼еļȷǷظ + String[] list = new File(basePath).list(); + String filenameString2 = filenameString + ".txt"; + // for(int i=0;i