下面是个程序,请高手按要求补冲程序,谢谢了!!急急!!

程序如下,本人现在想当单击“字体”菜单条时,弹出设置字体、字号、颜色的对话框,单击“帮助主题”和“关于记事本”时也弹出对话框显示相应的内容。我用的是neatbean 5.0


import java.awt.*;
import java.awt.event.*;

public class notePad
{
    public static void main(String args[])
  {
    mainFrame mf=new mainFrame();
    mf.setSize(500,400);
    mf.setLocation(100,100);
  }
}

class mainFrame extends Frame implements ActionListener,ItemListener,TextListener
{   /*定义Frame类的子类mainFrame类,这个类需要实现ActionListener、ItemListener和
 TextLestener接口 */
  String FileName;                       //定义用于保存文件名的变量
  String CopyText;                       //定义用于保存复制、粘贴的临时变量
  boolean HasSave=true;                //用于标识文本内容是否已经被保存
  int trigerSource;                     //标识单击哪个按钮触发“是否保存文件”的弹出窗口
  Panel ConP=new Panel();              //创建菜单棒
  MenuBar mb=new MenuBar();            //下面的语句是创建菜单项
  Menu mFile=new Menu("文件");
  Menu mEdit=new Menu("编辑");
  Menu mStyle=new Menu("格式");
  Menu mHelp=new Menu("帮助");
  //下面的语句是创建菜单条目,并给一些条目定义快捷方式按钮
  MenuItem miFNew=new MenuItem("新建",new MenuShortcut('n'));
  MenuItem miFOpen=new MenuItem("打开",new MenuShortcut('o'));
  MenuItem miFSave=new MenuItem("保存",new MenuShortcut('s'));
  MenuItem miFExit=new MenuItem("退出",new MenuShortcut('x'));
  MenuItem miSFont=new MenuItem("字体...");
  MenuItem miECut=new MenuItem("剪切",new MenuShortcut('c'));
  MenuItem miECopy=new MenuItem("复制",new MenuShortcut('p'));
  MenuItem miEPaste=new MenuItem("粘贴",new MenuShortcut('c'));
  MenuItem miEDelete=new MenuItem("删除",new MenuShortcut('l'));
  MenuItem miESelectAll=new MenuItem("全选",new MenuShortcut('a'));
  MenuItem miHTitle=new MenuItem("帮助主题");
  MenuItem miHAbout=new MenuItem("关于记事本");
  CheckboxMenuItem miSRead=new CheckboxMenuItem("只读");
  //这是检查框类型的菜单条目,即这个菜单条可以被选中也可以被撤消选中
  TextArea WriteCon=new TextArea();
  //定义文本区域,实现文字的输入
  FileDialog OFDialog=new FileDialog(this,"打开文件");
  //定义打开文件的对话框
  FileDialog SFDialog=new FileDialog(this,"保存文件");
  //定义保存文件的对话框
  Label mesLabel=new Label(FileName+"文件的文字已经被改变,");
  Label mesLabel2=new Label("想保存文件吗?");
  //定义是否保存文件的对话框显示文字
  Panel mesPanel=new Panel();
  Panel mesPanel1=new Panel();
  //下面语句定义询问是否保存的对话框及其相应的现实按钮
  Button SaveOK=new Button("是(Y)");
  Button SaveNO=new Button("否(N)");
  Button SaveCancel=new Button("取消");
  Dialog mesDialog=new Dialog(this,"询问窗口",true);

  mainFrame()
  {
    FileName="新建文本文件";
    //将文件名显示在Frame的标题上
    setTitle(FileName);
    /*以下语句用于注册各个对象需要监听的事件 */
    miFNew.addActionListener(this);
    miFOpen.addActionListener(this);
    miFSave.addActionListener(this);
    miFExit.addActionListener(this); 
    miECut.addActionListener(this);
    miECopy.addActionListener(this);
    miEPaste.addActionListener(this);
    miEDelete.addActionListener(this);
    miESelectAll.addActionListener(this);
    miHTitle.addActionListener(this);
    miHAbout.addActionListener(this);
    miSRead.addItemListener(this);
    miSFont.addActionListener(this);
    SaveOK.addActionListener(this);
    SaveNO.addActionListener(this);
    SaveCancel.addActionListener(this);
    WriteCon.addTextListener(this);
    //注册记事本编辑区域文本内容改变的监听
    addWindowListener(new closeWindow());
    /*这个语句是注册关闭Frame窗口的监听事件,只是它不从Frame创建的对象实现监听,
     而是从WindowAdapter类创建的对象实现监听,这少了许多累赘的工作*/
    miEPaste.setEnabled(false);
    //设置“粘贴”菜单条不可用,因为在没有复制之前不能实现粘贴
    //下面的语句将菜单项加到菜单棒上,将菜单条加到菜单项上
    mb.add(mFile);
    mb.add(mEdit);
    mb.add(mStyle);
    mb.add(mHelp);
    mFile.add(miFNew);
    mFile.add(miFOpen);
    mFile.add(miFSave);
    mFile.addSeparator();
    mFile.add(miFExit);
    mEdit.add(miECut);
    mEdit.add(miECopy);
    mEdit.add(miEPaste);
    mEdit.add(miEDelete);
    mEdit.addSeparator();
    mEdit.add(miESelectAll);
    mStyle.add(miSRead);
    mStyle.add(miSFont);
    mHelp.add(miHTitle);
    mHelp.add(miHAbout);

    setMenuBar(mb); //设置Frame的菜单棒为mb
    ConP.setBackground(new Color(200,200,200));
    add(ConP);
    ConP.setLayout(new BorderLayout());
    ConP.add(WriteCon,"Center");

    OFDialog.setLocation(130,150);
    SFDialog.setLocation(130,150);
              //设置打开文件和保存文件两个对话框的显示位置
    mesDialog.setLayout(new BorderLayout());
    mesLabel.setAlignment(1);
    mesLabel2.setAlignment(1);
    mesPanel.add(SaveOK);
    mesPanel.add(SaveNO);
    mesPanel.add(SaveCancel);
    mesPanel1.add(mesLabel);
    mesPanel1.add(mesLabel2);
    mesDialog.add(mesPanel1,"Center");
    mesDialog.add(mesPanel,"South");
   
    mesDialog.setSize(250,120);
    mesDialog.setLocation(200,250);

    show();
 }
 class closeWindow extends WindowAdapter
 {    /*  在mainFrame类中定义用于响应关闭窗口事件的类,使它成为WindowAdapter的子类*/
   public void windowClosing(WindowEvent e)
   {     //实现处理窗口关闭事件的方法windowClosing()
    if(getTitle().indexOf("*")!=-1)
    {   //当要关闭窗口如果文本内容改变了并没有保存,则显示是否保存窗口
       trigerSource=0; //赋值触发保存窗口提示的事件源
       mesLabel.setText(FileName+"文件的文字已经被改变,");
       mesDialog.show();
    }
    else
    {    //如果文本内容没有改变,则直接关闭窗口
       dispose();
       System.exit(0);
    }
   }
 }
 
 public void actionPerformed(ActionEvent e)  //定义菜单响应事件
 {
    if(e.getSource()==miFExit)
    {   //单击关闭菜单条
       if(! HasSave)
       {   //文件没保存则先提示是否保存文件
          trigerSource=0;
          mesLabel.setText(FileName+"文件的文字已经被改变,");
          mesDialog.show();
       }
       else
       {    //退出系统
          dispose();
          System.exit(0);
       }
    }
    else if(e.getSource()==miFNew)
    {     //单击新建菜单条
         if(! HasSave)
         {
            trigerSource=1;
            mesLabel.setText(FileName+"文件的文字已经被改变,");
            mesDialog.show();
         }
         else
         {
            resetNote();   //新建文本
         }
    }
    else if(e.getSource()==miFOpen)
    {       //单击打开文件菜单条
         if(! HasSave)
         {
            trigerSource=2;
            mesLabel.setText(FileName+"文件的文字已经被改变,");
            mesDialog.show();
         }
         else
         {
            OpenFile();  //打开文件
         }
    }
    else if(e.getSource()==miFSave)
    {
         SaveFile();   //保存文件
    }
    else if(e.getSource()==miECut)
    {    //剪切选中文本
         CopyText=WriteCon.getSelectedText(); //将选中的文本保存到CopyText变量中
         WriteCon.replaceText("",WriteCon.getSelectionStart(),WriteCon.getSelectionEnd());
             //删除选中的文本
         WriteCon.select(WriteCon.getSelectionStart(),WriteCon.getSelectionStart());
            //设置使得文本没有被选中
         miEPaste.setEnabled(true);
           //设置粘贴菜单条为可用状态
    }
    else if(e.getSource()==miECopy)
    {   //复制文本
        CopyText=WriteCon.getSelectedText();  //将选中的文本保存到CopyText变量中
        miEPaste.setEnabled(true);            //设置粘贴菜单条为可用状态
    }
    else if(e.getSource()==miEPaste)
    {     //粘贴文本
        WriteCon.replaceText("",WriteCon.getSelectionStart(),WriteCon.getSelectionEnd());
               //如果有文本被选中,先删除这段文本
        WriteCon.insertText(CopyText,WriteCon.getCaretPosition());
              //将文本插入到光标处
    }
    else if(e.getSource()==miEDelete)
    {   //删除文本
       WriteCon.replaceText("",WriteCon.getSelectionStart(),WriteCon.getSelectionEnd());
       WriteCon.select(WriteCon.getSelectionStart(),WriteCon.getSelectionStart());
      //设置使得文本没有被选中
    }
    else if(e.getSource()==miESelectAll)
    {  //选中所有文本
        WriteCon.selectAll();
    }
    else if(e.getSource()==SaveOK)
    {   //当单击保存对话框中的“是”按钮时,实行保存操作
       if(SaveFile())
          DealDialog();
       else
          mesDialog.dispose();     //关闭保存提示对话框
    }
    else if(e.getSource()==SaveNO)
    {   //当单击保存对话框中的“否”时,执行相应操作
       DealDialog();
    }
    else if(e.getSource()==SaveCancel)
    {   //当单击保存对话框中的“取消”时,关闭保存提示对话框
       mesDialog.dispose();
    }
 }

 public void textValueChanged(TextEvent e)
 {     //当文本内容改变时
    if(e.getSource()==WriteCon)
    {  //将显示在窗口上的标题加“*”
       if(getTitle().indexOf("*")==-1)
           setTitle(getTitle()+"*");
         HasSave=false;
    }
 }

 public void DealDialog()
 {     //处理保存提示对话框的方法
   mesDialog.dispose();    //关闭对话框
   if(trigerSource==0)     //如果是关闭系统事件触发的,则退出系统
        System.exit(0);
   else if(trigerSource==1) //如果是新建文本文件事件触发的,则执行resetNote()
        resetNote();
   else if(trigerSource==2)  //如果是打开文件事件触发的,则执行OpenFile();
        OpenFile();
 }
 void resetNote()
 {
   WriteCon.setText("");
   HasSave=true;
   FileName="新建文本文件";
   setTitle(FileName);
   miSRead.setState(false);
 }
 void OpenFile()
 {
      OFDialog.show();
      /*这里编写打开文件并读取文件的操作*/
      FileName=OFDialog.getFile();
 }
 
 public void itemStateChanged(ItemEvent e)   //定义复选框菜单响应事件
 {
    if(e.getSource()==miSRead)
       if(((CheckboxMenuItem)(e.getSource())).getState())
            WriteCon.setEditable(false);  //将文本区域设置成不可编辑状态
       else
            WriteCon.setEditable(true);   //将文本区域设置成不可编辑状态
 }
 boolean SaveFile()
 {
    String tmpFileName=FileName;
    String Obj1="null";
    if(! HasSave)
    {         //如果需要保存,则执行保存语句
       if(FileName.compareTo("新建文本文件")==0)
       {     //如果还没有文件名则弹出保存文件的对话框
          SFDialog.show();
          tmpFileName=String.valueOf(SFDialog.getFile());
       }
       if(! tmpFileName.equals(Obj1))
       {
           /*这里需要添加的语句是将内容写入文件*/
          HasSave=true;
          FileName=tmpFileName;
          setTitle(FileName);
          return true;   //保存成功返回true
       }
       else
          return false; //保存不成功返回false
    }
    else
       return true;    //不用保存返回true
 }
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值