/* 这是大一写的记事本,虽然功能不全,但可以用。虽然自己依然弱鸡,但是木有关系的啦,主要是赚积分啊。哈哈哈哈哈 自己好像不会在这里传文件,所以就把源码贴出来。 项目一共有五个java文件。 分别是: MenuItemFuncationRealize.java NodeBase.java NodePand.java PopupRun.java RightMouseMenu.java 每个文件分工还是明确的,只不过没有UML图。 */ //MenuItemFuncationRealize.java的源码: package notebookPackage; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; public class MenuItemFuncationRealize { JFrame noteframe ; public MenuItemFuncationRealize(JFrame frame , JTextArea ta) { noteframe =frame; savePanelArea = ta ; } public MenuItemFuncationRealize() { } //New按钮的属性 JDialog NewDialog ; JLabel NewLabel ; JTextArea NewText ; JButton NewYes , NewCancel ; static File titleFile; //注意static 关建字:我找了一个月的错....... FileOutputStream connectTitleFile; OutputStreamWriter connectFileOutputStream; JTextArea savePanelArea ;//save的 static boolean notBuildFileAndSave = false; //New的功能(新建文件的功能) public void NewFuncation() { NewDialog = new JDialog(noteframe , "新建" , true); NewLabel = new JLabel("新建文件名:"); NewText = new JTextArea(0 , 10); NewYes = new JButton("新建"); NewCancel = new JButton("取消"); NewDialog.setLayout(new GridLayout(2 ,2)); NewDialog.add(NewLabel); NewDialog.add(NewText); NewDialog.add(NewYes); NewDialog.add(NewCancel); NewYes.addMouseListener(new NewYesGo()); NewCancel.addMouseListener(new NewCancelGo()); NewDialog.setSize(250, 130); NewDialog.setLocationRelativeTo(null); //setLocationRelativeTo()一定要跟在setSize后面才有用,原因不知。 NewDialog.setVisible(true); NewDialog.addWindowListener( new WindowAdapter() { public void wondowClosing(WindowEvent e) { NewDialog.dispose(); } }); } public class NewYesGo extends MouseAdapter { boolean nameFileTest = false ; public void mouseReleased(MouseEvent e) { if(NewText.getText().trim().equals("")) //trim是去掉字符串空格 equals比较俩字符串 { NewText.setText(""); } else { titleFile = new File("/" , NewText.getText()+".txt"); nameFileTest = true; try { if(!titleFile.exists()) titleFile.createNewFile(); } catch(FileNotFoundException m) { //m.printStackTrace(); BuildErrowDialog(); } catch(IOException u) { //u.printStackTrace(); BuildErrowDialog(); } } notBuildFileAndSave = true; if(nameFileTest == true) NewDialog.setVisible(false); } } //文件创建失败提示框 public void BuildErrowDialog() { JOptionPane.showMessageDialog(noteframe , "文件创建失败" ,"错误" , JOptionPane.ERROR_MESSAGE); } final class NewCancelGo extends MouseAdapter { public void mouseReleased(MouseEvent e) { NewText.setText(""); NewDialog.setVisible(false); //关闭的方法 } } //实现了New的方法,表扬自己哈哈..... //save方法的实现 public void saveFuncation() { if(notBuildFileAndSave == true) { try { connectTitleFile = new FileOutputStream(titleFile); } catch(FileNotFoundException f) { f.printStackTrace(); } connectFileOutputStream = new OutputStreamWriter(connectTitleFile); String saveAreaContent ; saveAreaContent = savePanelArea.getText(); try { connectFileOutputStream.write(saveAreaContent); connectFileOutputStream.flush(); } catch (NullPointerException e) { // TODO 自动生成的 catch 块 //e.printStackTrace(); saveFieldFailed(); System.out.print("error"); } catch(IOException m) { saveFieldFailed(); } } else { quickSave(); } } //文件保存失败后的提示框 protected void saveFieldFailed() { JOptionPane.showMessageDialog(noteframe, "文件保存失败" , "错误" , JOptionPane.ERROR_MESSAGE); } //直接保存提示 protected void quickSave() { JOptionPane.showMessageDialog(noteframe, "请先创建文件" , "错误" , JOptionPane.ERROR_MESSAGE); } //打开功能实现 public void openFuncation() { JFileChooser openFc = new JFileChooser(); openFc.showOpenDialog(noteframe); } //退出功能实现 public void ExitFuncation() { noteframe.dispose(); System.exit(0); } protected void aboveFuncation() { String helpMessage = "如果你在使用该记事本的过程中遇到了问题\n请电话连系这位苦逼的程序员(单身)\n连系电话:18846791758"; JOptionPane.showMessageDialog(noteframe, helpMessage , "信息" , JOptionPane.INFORMATION_MESSAGE ); } } //NodeBase.java的源码: package notebookPackage; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class NoteBase { JFrame noteFrame = new JFrame("迷你记事本"); JMenuBar menuBar ; JMenu menu ; JMenu help; JMenuItem New , Open , Save , Exit , Above ; JPanel TextPanel; public JTextArea PanelArea ; public NoteBase() { menuBar = new JMenuBar(); menu = new JMenu("文件(F)"); help = new JMenu("帮助"); New = new JMenuItem("新建(N)" , KeyEvent.VK_N); Open = new JMenuItem("打开" , KeyEvent.VK_O); Save = new JMenuItem("保存(S)..." , KeyEvent.VK_S); Exit = new JMenuItem("退出(E)" , KeyEvent.VK_E); Above = new JMenuItem("关于我..."); TextPanel = new JPanel(); PanelArea = new JTextArea(21 , 62); PanelArea.setEditable(true); menuBar.add(menu); menuBar.add(help); menu.add(New); menu.add(Open); menu.add(Save); menu.addSeparator(); menu.add(Exit); help.add(Above); noteFrame.setJMenuBar(menuBar); TextPanel.add(PanelArea); New.addMouseListener( new NewMouseListener()); Open.addMouseListener( new OpenMouseListener()); Save.addMouseListener(new SaveMouseListener()); Exit.addMouseListener( new ExitMouseListener()); Above.addMouseListener(new aboveMouseListener()); noteFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); noteFrame.getContentPane().add(TextPanel, BorderLayout.WEST); noteFrame.setVisible(true); noteFrame.setSize(712, 400); noteFrame.setEnabled(true); //noteFrame.setResizable(false); noteFrame.setLocationRelativeTo(null); } protected class NewMouseListener extends MouseAdapter { public void mouseReleased(MouseEvent e) { MenuItemFuncationRealize mifr = new MenuItemFuncationRealize(noteFrame , PanelArea); mifr.NewFuncation(); } } protected class OpenMouseListener extends MouseAdapter { public void mouseReleased(MouseEvent e) { //等待 MenuItemFuncationRealize mifr = new MenuItemFuncationRealize(noteFrame , PanelArea); mifr.openFuncation(); } } protected class SaveMouseListener extends MouseAdapter { public void mouseReleased(MouseEvent e) { MenuItemFuncationRealize mifr = new MenuItemFuncationRealize(noteFrame , PanelArea); mifr.saveFuncation(); } } protected class ExitMouseListener extends MouseAdapter { public void mouseReleased(MouseEvent e) { MenuItemFuncationRealize mifr = new MenuItemFuncationRealize(noteFrame , PanelArea); mifr.ExitFuncation(); } } protected class aboveMouseListener extends MouseAdapter { public void mouseReleased(MouseEvent e) { MenuItemFuncationRealize mifr = new MenuItemFuncationRealize(noteFrame , PanelArea); mifr.aboveFuncation(); } } } //NodePand.java的源码: package notebookPackage; public class NotePand { public static void main(String[] args) { NoteBase nb = new NoteBase(); //Runnable r = new PopupRun(); //Thread t = new Thread(r); //t.start(); RightMouseMenu pim = new RightMouseMenu(); } } //PopupRun.java的源码: package notebookPackage; /* public class PopupRun implements Runnable{ public void run() { popupIsMouse rm = new popupIsMouse(); } } */ //RightMouseMenu.java的源码: package notebookPackage; import java.awt.event.*; import javax.swing.*; class RightMouseMenu extends MenuItemFuncationRealize implements ActionListener {//此处继承接口ActionListener , menuItem.addActionListener(this)才能用 JPopupMenu popup = new JPopupMenu(); //创建右键菜单 protected RightMouseMenu() { super(); JMenuItem menuItem = new JMenuItem("新建" , KeyEvent.VK_N); menuItem.addActionListener(this); menuItem.setActionCommand("new"); popup.add(menuItem); menuItem = new JMenuItem("打开",KeyEvent.VK_O); menuItem.addActionListener(this); menuItem.setActionCommand("open"); popup.add(menuItem); menuItem = new JMenuItem("保存" , KeyEvent.VK_S); menuItem.setActionCommand("save"); menuItem.addActionListener(this); popup.add(menuItem); popup.addSeparator(); menuItem = new JMenuItem("退出", KeyEvent.VK_E); menuItem.addActionListener(this); menuItem.setActionCommand("exit"); popup.add(menuItem); } public void actionPerformed(ActionEvent e) { if(e.getActionCommand() == "new") { super.NewFuncation(); } if(e.getActionCommand() == "open") { super.openFuncation(); } if(e.getActionCommand() == "save") { super.saveFuncation(); } if(e.getActionCommand() == "exit") { super.ExitFuncation(); } } } class popupIsMouse extends RightMouseMenu implements MouseListener{ popupIsMouse() { super(); } @Override public void mouseClicked(MouseEvent e) { // TODO 自动生成的方法存根 maybeShowPopup(e); } @Override public void mousePressed(MouseEvent e) { // TODO 自动生成的方法存根 maybeShowPopup(e); } @Override public void mouseReleased(MouseEvent e) { // TODO 自动生成的方法存根 maybeShowPopup(e); } @Override public void mouseEntered(MouseEvent e) { // TODO 自动生成的方法存根 maybeShowPopup(e); } @Override public void mouseExited(MouseEvent e) { // TODO 自动生成的方法存根 maybeShowPopup(e); } protected void maybeShowPopup(MouseEvent e) { if(e.isPopupTrigger()) { super.popup.show(e.getComponent() , e.getX() , e.getY()); } } } //看到最后,我当然不会告诉你鼠标右键的线程好像创建失败
哇。。。。。。。(逃