mini记事本

大笑

/*  
这是大一写的记事本,虽然功能不全,但可以用。虽然自己依然弱鸡,但是木有关系的啦,主要是赚积分啊。哈哈哈哈哈
自己好像不会在这里传文件,所以就把源码贴出来。
项目一共有五个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());
}
}

}


//看到最后,我当然不会告诉你鼠标右键的线程好像创建失败

哇。。。。。。。(逃大笑

猜你喜欢

转载自blog.csdn.net/libingbojava/article/details/78499327