Java实训报告

Java实训报告

实训项目:小猪吃豆

班级:

指导老师:

一,游戏介绍:

小猪吃豆是一款简单而又经典的小游戏。游戏的玩法就是通过键盘的左右上下按键控制小猪,躲避森林动物的追击,同时把随机产生的小豆吃掉。游戏有初中高三个级别。游戏通过玩家过关所需要的时间来确定排名。

二,设计思路:

1, 一开始,在玩家点击菜单栏的开始按钮后,界面会随机出现一定数量的小豆和一只小猪,同时启动时间线程,计时开始。

2, 界面随机产生一些森林动物,作为小猪的障碍物。森林动物会移动,并紧跟着小猪。

3, 小猪会在玩家的控制下,躲避森林动物,并吃小豆,每吃掉一颗豆,就启动音乐线程,发出声音。

4, 游戏过程会随机出现大力丸,小猪吃掉大力丸后,可以增加功力,与森林动物对抗。大力丸会在一定时间后消失。

5, 游戏还要有一个暂停和继续的功能。

6, 游戏设置有三个级别。障碍物和小豆的个数都不同,用于体现难度的不同。

三,关键问题解决:

1, 游戏当中有几个核心的问题,比如:小豆,小猪,森林动物等物体的随机产生;小猪吃掉小豆,也就是他们的重叠;中途大力丸的出现等等。在老师的帮助下,我知道了Java中有个Random类,可以产生随机数。而判断小猪和小豆或者动物的重叠,也就是“被吃掉”也有相应的判断方法。

2, 有关大力丸部分的问题:在游戏中,小猪吃的大力丸个数不同,对应的功力也不同。而小猪吃掉大力丸之后,功力又恢复。这需要很多的判断。后来,我就是一步步来,用一个一个的if去实现的。

3, 游戏要控制大力丸出现后一定时间后消失。如果使用线程的话,那么游戏的线程太多,会影响到游戏的运行。后来老师建议使用Java的计时器。我参考了Java的帮助文档和网络上的有关资料,对计时器类timer有了一定认识和了解后,成功的将计时器加进了程序当中。

四,心得体会:

在游戏开发的整个过程,我感受最深的就是大力丸实现的部分。因为大力丸是老师要求的最后一个拓展部分,我完成前面部分的时候,曾想过不要增加大力丸,就那样就行了。可后来我觉得还是有时间,可以试试,就自己去试了。才发现,其实大力丸部分的实现也不是很难,还是可以完成的。而且是自己一个人完成的。这让我觉得:在开发过程,不应该还没有开始工作,开始尝试就选择放弃。有些功能,只要能尝试着去开发,最后是可以完成的。不要还没开始就放弃,那样就绝对没有机会完成相关内容。

在这个过程,我参考了很多资料,从老师那里来的,网上来的,还有同学那里。

就拿森林动物靠近小猪这个部分来说,我曾尝试让动物的坐标与小猪的坐标关联,可发现出了很多问题,比如那样子动物的移动就不是一步步移动,而是跳动的,那样不好看。后来我问了一位同学,他说,让动物的坐标靠近小猪的坐标就行了。其实,企业中,不是以个人为单位,而是以团队为单位的。团队的合作在现代企业中显得非常重要。当然,相对应的人与人之间的沟通与协助,也就显得非常重要了。这是个人软实力的体现。

在这个过程,我发现自己对Java的很多知识还很模糊。像游戏中的时间格式问题,

对键盘事件的处理等,都是从老师那里借鉴来的。自己的知识系统还不稳固,在今后的学习当中,要有针对性地加以补习。

 

第二篇:JAVA实训报告

Java实训报告

指导老师:夏超群

微机1班

姓名_______

学号_______

20##年3月28日-4月1日

标题:记事本

一.实训目的

1、为了进一步巩固《Java程序设计》课程中所学到的知识,熟练掌握Java各种数据类型和语句,充分领会Java程序设计方法的特点;

2、掌握Java语言编程和程序调试的基本技能,提高运用Java语言解决实        际问题的能力;

3、熟练掌握界面处理。
二.实训内容

1、实训设备与工具:个人计算机,Windows操作系统,Java编译开发环境

2、实训任务:首先创建一个窗体容器,然后为其添加一个主菜单和一个文本区,利用这些菜单项可分别完成文件内容编辑,新建,打开,和保存文件的功能。

3、技术要点:

(1)菜单的结构为:JMenuBar(菜单条) JMenu(主菜单项) JMenuItem(子菜单项)通过调用(MenuObject.add)将主菜单添加到菜单条中。

(2)通过调用窗体的JMenuBar(菜单条对象)方法可将菜单添加到窗体中。

(3)要为菜单添加相应的功能,应对各子菜单项对象增加事件监听器,然后编写相应的事件处理程序。

(4)通过编写:子菜单项.addActioLIstener(this);语句为各子菜单项注册了事件侦听器,然后通过actionPerformed方法中编写Object。

(5)JtextArea对象可用于编辑文本内容,利用其setText()方法可设置在文本区显示的内容,利用其getText()方法可获取文本区的内容。使用时,只需将其加入窗体即可。

(6)为了选择文件,我们使用了JfileChooser类,该类的showOpenDialog()方法用来显示一个文件选择对话框,getSeletedFile()方法用来返回所选文件。

(7)为了写文件,创建了一个FileWriter对象。

三.程序流程图

 

四.程序清单

import javax.swing.*;  //关于图形界面应用的包

import java.awt.*;  //导入构建图形用户界面的类包

import java.awt.event.*;

import java.io.*;  //导入标准输入/输出包

import javax.swing.undo.*;

import javax.swing.event.*;  //都是处理图形界面的包

//创建一个类

class NotePad extends JFrame {

 private UndoManager manager;

 private JFileChooser choose;  //创建文件选择

 private File selectedfile;

 private JTextArea text;  //创建文本区

 private java.awt.Container container;

 private JMenuBar menuBar;  //创建菜单条

 private JTextField status;

 private boolean newPage = false;

 // File菜单

 private JMenu menu;  //文件主菜单

 private JMenuItem newText;  //子菜单 新建

 private JMenuItem open;  //打开

 private JCheckBoxMenuItem readOnly;  //只读

 private JMenuItem save;  //保存

 private JMenuItem saveAs;  //另存为

 private JMenuItem exit;  //退出

 // Edit菜单

 private JMenu edit;  //

 private JMenuItem undo;  //撤消

 private JMenuItem redo;  //重做

 private JMenuItem cut;  //剪切

 private JMenuItem copy;  //复制

 private JMenuItem copyAll;  //复制所有

 private JMenuItem paste;  //粘贴

 private JMenuItem delete;  //删除

 private JMenuItem deleteAll;  //删除所有

 private JMenuItem selectAll;  //选择所有

 private JMenuItem searchAndReplace;  //查找与替换

 // 视图菜单

 private JMenu view;

 private JCheckBoxMenuItem wrap;  //自动换行

 private JCheckBoxMenuItem onTop;  //保持窗口在最上

 private JMenuItem zoomIn;  //放大页面

 private JMenuItem zoomOut;  //缩小页面

 // 工具菜单

 private JMenu tool;

 private JMenuItem fontSum;  //字数统计

 private JMenuItem setcolor;  //设置背景颜色

 private JMenuItem setFontColor;  //设置字体颜色

 // 帮助菜单

 private JMenu help;

 private JMenuItem about;  //关于

 // 右键菜单

 private JPopupMenu pop;  //弹出式菜单

 private JMenuItem popUndo;  //撤消

 private JMenuItem popRedo;  //重做

 private JMenuItem popCut;  //剪切

 private JMenuItem popCopy;   //复制

 private JMenuItem popSelectAll;  //全部选择

 private JMenuItem popCopyAll;  //全部复制

 private JMenuItem popPaste;  //粘贴

 private JMenuItem popDelete;  //删除

 private JMenuItem popClear;  //清空

 public NotePad() {  //构造函数,调用父类的构造函数设定标题

  super("记事本");

  try{

   UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

  }catch(Exception e){}//异常捕捉处理

  container = getContentPane();

  container.setLayout(new BorderLayout(0,-2));

  manager = new UndoManager();

  text = new JTextArea();

  text.setFont(new Font("宋体",Font.PLAIN,14));

  text.getDocument().addUndoableEditListener(manager);

  text.setTabSize(2);

  text.setSelectedTextColor(Color.WHITE);

  text.setSelectionColor(Color.DARK_GRAY);

  text.setLineWrap(true);

  text.setWrapStyleWord(true);

  text.setCaretColor(Color.RED);

  text.setMargin(new Insets(3, 10, 3, 7));

  text.setDragEnabled(true);

  container.add(new JScrollPane(text,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED));//设置滚动条对象

  menuBar = new JMenuBar();

  // File菜单

  menu = new JMenu("文件(F)");

  menu.setMnemonic('F');//设置快捷键

  newText = new JMenuItem("新建(N)");

  newText.setMnemonic('N');//设置快捷键

  newText.addActionListener(new ActionListener() {    //注册新建动作监听

   public void actionPerformed(ActionEvent event) {

    if(selectedfile == null && !text.getText().equals("")  &&

      JOptionPane.showConfirmDialog(container, "是否保存", "是否保存", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION){

     choose = new JFileChooser();

     int state = choose.showSaveDialog(container);  //显示保存对话框

     if (state == JFileChooser.APPROVE_OPTION) {

      try {

       File file = choose.getSelectedFile();

       FileWriter os = new FileWriter(file);//初始化输入流

       os.write(text.getText(), 0, text.getText().length());

       os.flush();

       file.createNewFile();

       os.close();

      } catch (IOException e) {//异常捕捉处理

       JOptionPane.showMessageDialog(container, "保存文件失败","ERROR", JOptionPane.ERROR_MESSAGE);//显示对话框

      }

     }

    }else if(selectedfile != null &&

      JOptionPane.showConfirmDialog(container, "是否保存", "是否保存", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION){

    try {

      FileWriter os = new FileWriter(selectedfile);

      os.write(text.getText(), 0, text.getText().length());

      os.flush();

      os.close();

    } catch (IOException e) {}//异常捕捉处理

   }

   text.setText("");

   newPage = true;

   selectedfile = null;

   status.setText("");

   }

  });

  open = new JMenuItem("打开(O)");

  open.setMnemonic('O');//设置快捷键

  open.addActionListener(new ActionListener() {     //注册打开动作监听

   public void actionPerformed(ActionEvent event) {

    if(selectedfile!=null &&

      JOptionPane.showConfirmDialog(container, "是否保存", "是否保存", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_NO_OPTION){

     try{

      FileWriter os = new FileWriter(selectedfile);

      os.write(text.getText(), 0, text.getText().length());

      os.flush();

      os.close();

      newPage = false;

     }catch(IOException e){}

    }else if(selectedfile==null && !text.getText().equals("") &&

      JOptionPane.showConfirmDialog(container, "是否保存", "是否保存", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_NO_OPTION){

     choose = new JFileChooser();

     int state = choose.showSaveDialog(container);

     if (state == JFileChooser.APPROVE_OPTION) {

      try {

       File file = choose.getSelectedFile();

       FileWriter os = new FileWriter(file);

       os.write(text.getText(), 0, text.getText().length());

       os.flush();

       file.createNewFile();

       os.close();

       newPage = false;

      } catch (IOException e) {

       JOptionPane.showMessageDialog(container, "保存文件失败",

         "ERROR", JOptionPane.ERROR_MESSAGE);

      }

     }

    }

    choose = new JFileChooser();

    choose.setFileFilter(new filter());

    int state = choose.showOpenDialog(container);

    if (state == JFileChooser.APPROVE_OPTION) {

     status.setText(choose.getSelectedFile().toString());

     try {

      selectedfile = choose.getSelectedFile();

      FileReader isr = new FileReader(selectedfile);

      text.read(isr, "");

      isr.close();

      newPage = false;

     } catch (IOException e) {

      JOptionPane.showMessageDialog(container, "打开文件失败",

        "ERROR", JOptionPane.ERROR_MESSAGE);

     }

    }

   }

  });

  readOnly = new JCheckBoxMenuItem("只读模式(R)");

  readOnly.setMnemonic('R');//设置快捷键

  readOnly.addChangeListener(new ChangeListener() {

   public void stateChanged(ChangeEvent event) {

    if(readOnly.isSelected()){

     text.setEditable(false);

     cut.setEnabled(false);

     paste.setEnabled(false);

     delete.setEnabled(false);

     deleteAll.setEnabled(false);

     redo.setEnabled(false);

     undo.setEnabled(false);

     searchAndReplace.setEnabled(false);

    

     popClear.setEnabled(false);

     popCut.setEnabled(false);

     popDelete.setEnabled(false);

     popPaste.setEnabled(false);

     popRedo.setEnabled(false);

     popUndo.setEnabled(false);

    }

    else{

     text.setEditable(true);

     cut.setEnabled(true);

     paste.setEnabled(true);

     delete.setEnabled(true);

     deleteAll.setEnabled(true);

     redo.setEnabled(true);

     undo.setEnabled(true);

     searchAndReplace.setEnabled(true);

    

     popClear.setEnabled(true);

     popCut.setEnabled(true);

     popDelete.setEnabled(true);

     popPaste.setEnabled(true);

     popRedo.setEnabled(true);

     popUndo.setEnabled(true);

    }

   }

  });

  save = new JMenuItem("保存(S)");

  save.setMnemonic('S');//设置快捷键

  save.addActionListener(new ActionListener() {    //注册保存动作监听

   public void actionPerformed(ActionEvent event) {

    if (newPage == true || selectedfile == null) {

     choose = new JFileChooser();

     int state = choose.showSaveDialog(container);

     if (state == JFileChooser.APPROVE_OPTION) {

      try {

       File file = choose.getSelectedFile();

       FileWriter os = new FileWriter(file);

       os.write(text.getText(), 0, text.getText().length());

       os.flush();

       file.createNewFile();

       os.close();

       newPage = false;

      } catch (IOException e) {

       JOptionPane.showMessageDialog(container, "保存文件失败","ERROR", JOptionPane.ERROR_MESSAGE);

      }

     }

    } else if(newPage == false && selectedfile != null){

     try {

      FileWriter os = new FileWriter(selectedfile);

      os.write(text.getText(), 0, text.getText().length());

      os.flush();

      os.close();

     } catch (IOException e) {

      JOptionPane.showMessageDialog(container, "保存文件失败","ERROR", JOptionPane.ERROR_MESSAGE);

     }

    }

   }

  });

  saveAs = new JMenuItem("另存为(A)");

  saveAs.setMnemonic('A');//设置快捷键

  saveAs.addActionListener(new ActionListener() {

   public void actionPerformed(ActionEvent event) {

    choose = new JFileChooser();

    int state = choose.showSaveDialog(container);

    if (state == JFileChooser.APPROVE_OPTION) {

     try {

      File file = choose.getSelectedFile();

      FileWriter os = new FileWriter(file);

      os.write(text.getText(), 0, text.getText().length());

      os.flush();

      file.createNewFile();

      os.close();

      newPage = false;

     } catch (IOException e) {

      JOptionPane.showMessageDialog(container, "保存文件失败","ERROR", JOptionPane.ERROR_MESSAGE);

     }

    }

   }

  });

  exit = new JMenuItem("退出(Q)");

  exit.setMnemonic('Q');//设置快捷键

  exit.addActionListener(new ActionListener() {

   public void actionPerformed(ActionEvent event) {

    System.exit(0);

   }

  });

  menu.add(newText);

  menu.add(open);

  menu.add(readOnly);

  menu.add(save);

  menu.add(saveAs);

  menu.add(exit);

  // Edit菜单

  edit = new JMenu("编辑(E)");

  edit.setMnemonic('E');//设置快捷键

  undo = new JMenuItem("撤销(U)");

  undo.setMnemonic('U');//设置快捷键

  undo.addActionListener(new ActionListener() {

   public void actionPerformed(ActionEvent event) {

    if (manager.canUndo())

     manager.undo();

   }

  });

  redo = new JMenuItem("重做(Y)");

  redo.setMnemonic('Y');//设置快捷键

  redo.addActionListener(new ActionListener() {

   public void actionPerformed(ActionEvent event) {

    if (manager.canRedo())

     manager.redo();

   }

  });

  cut = new JMenuItem("剪切(X)");

  cut.setMnemonic('X');//设置快捷键

  cut.addActionListener(new ActionListener() {

   public void actionPerformed(ActionEvent event) {

    text.cut();

   }

  });

  copy = new JMenuItem("复制(C)");

  copy.setMnemonic('C');//设置快捷键

  copy.addActionListener(new ActionListener() {

   public void actionPerformed(ActionEvent event) {

    text.copy();

   }

  });

  copyAll = new JMenuItem("复制所有(Z)");

  copyAll.setMnemonic('Z');//设置快捷键

  copyAll.addActionListener(new ActionListener() {

   public void actionPerformed(ActionEvent event) {

    text.selectAll();

    text.copy();

   }

  });

  paste = new JMenuItem("粘贴(V)");

  paste.setMnemonic('V');//设置快捷键

  paste.addActionListener(new ActionListener() {

   public void actionPerformed(ActionEvent event) {

    text.paste();

   }

  });

  delete = new JMenuItem("删除(D)");

  delete.setMnemonic('D');//设置快捷键

  delete.addActionListener(new ActionListener() {

   public void actionPerformed(ActionEvent event) {

    text.replaceRange("", text.getSelectionStart(), text

      .getSelectionEnd());

   }

  });

  deleteAll = new JMenuItem("删除所有(W)");

  deleteAll.setMnemonic('W');//设置快捷键

  deleteAll.addActionListener(new ActionListener() {

   public void actionPerformed(ActionEvent event) {

    text.replaceRange("", 0, text.getText().length());

   }

  });

  selectAll = new JMenuItem("选择所有(B)");

  selectAll.setMnemonic('B');//设置快捷键

  selectAll.addActionListener(new ActionListener() {

   public void actionPerformed(ActionEvent event) {

    text.selectAll();

   }

  });

  searchAndReplace = new JMenuItem("查找与替换(M)");

  searchAndReplace.setMnemonic('M');//设置快捷键

  searchAndReplace.addActionListener(new ActionListener() {

   public void actionPerformed(ActionEvent event) {

    new Search();

   }

  });

  edit.add(undo);

  edit.add(redo);

  edit.addSeparator();

  edit.add(selectAll);

  edit.add(cut);

  edit.add(copy);

  edit.add(copyAll);

  edit.add(paste);

  edit.add(delete);

  edit.add(deleteAll);

  edit.addSeparator();

  edit.add(searchAndReplace);

  // 视图菜单

  view = new JMenu("视图(V)");

  view.setMnemonic('V');//设置快捷键

  wrap = new JCheckBoxMenuItem("自动换行(J)");

  wrap.setSelected(true);

  wrap.setMnemonic('J');//设置快捷键

  wrap.addChangeListener(new ChangeListener() {

   public void stateChanged(ChangeEvent event) {

    text.setLineWrap(wrap.isSelected());

   }

  });

  onTop = new JCheckBoxMenuItem("保持窗口在最上");

  onTop.addChangeListener(

    new ChangeListener(){

     public void stateChanged(ChangeEvent event){

      keepOnTop(onTop.isSelected());

     }

    }

    );

  zoomIn = new JMenuItem("放大页面(I)");

  zoomIn.setMnemonic('I');//设置快捷键

  zoomIn.addActionListener(new ActionListener() {

   public void actionPerformed(ActionEvent event) {

    String fontName = text.getFont().getFontName();

    int fontSize = text.getFont().getSize();

    int style = text.getFont().getStyle();

    if (fontSize < 70)

     text.setFont(new Font(fontName, style, fontSize + 2));

   }

  });

  zoomOut = new JMenuItem("缩小页面(O)");

  zoomOut.setMnemonic('O');//设置快捷键

  zoomOut.addActionListener(new ActionListener() {

   public void actionPerformed(ActionEvent event) {

    String fontName = text.getFont().getFontName();

    int fontSize = text.getFont().getSize();

    int style = text.getFont().getStyle();

    if (fontSize > 9)

     text.setFont(new Font(fontName, style, fontSize - 1));

   }

  });

  view.add(wrap);

  view.addSeparator();

  view.add(onTop);

  view.addSeparator();

  view.add(zoomIn);

  view.add(zoomOut);

  // 工具菜单

  tool = new JMenu("工具(T)");

  tool.setMnemonic('T');//设置快捷键

  fontSum = new JMenuItem("字数统计(L)");

  fontSum.setMnemonic('L');//设置快捷键

  fontSum.addActionListener(new ActionListener() {

   public void actionPerformed(ActionEvent event) {

    String all = text.getText();

    int space = 0;// 空格

    int letter = 0;// 英文字母

    int digit = 0;// 数字

    int enter = 0;// 换行

    int other = 0;// 其它

    int otherLetter = 0;

    for (int i = 0; i < all.length(); i++) {

     char ch = all.charAt(i);

     if (Character.isDigit(ch))

      digit++;

     else if (Character.isLowerCase(ch)

       || Character.isUpperCase(ch))

      letter++;

     else if (Character.isLetter(ch))

      otherLetter++;

     else if (Character.isSpaceChar(ch))

      space++;

     else if (ch == 10)

      enter++;

     else

      other++;

    }

    JOptionPane.showMessageDialog(container, "字符个数:\n\n数字:" + digit

      + "\n英文字母:" + letter + "\n其它字母:" + otherLetter

      + "\n空格:" + space + "\n换行:" + enter + "\n其它:" + other,

      "字符统计", JOptionPane.INFORMATION_MESSAGE);

   }

  });

 

  setFontColor = new JMenuItem("设置字体颜色");

  setFontColor.addActionListener(

    new ActionListener(){

     public void actionPerformed(ActionEvent event){

      Color color = JColorChooser.showDialog(container, "字体色选择", Color.BLACK);

      text.setForeground(color);

     }

    }

    );

 

  setcolor = new JMenuItem("设置背景色(G)");

  setcolor.setMnemonic('G');//设置快捷键

  setcolor.addActionListener(

    new ActionListener(){

     public void actionPerformed(ActionEvent event){

      Color color = JColorChooser.showDialog(container, "背景色选择", Color.WHITE);

      text.setBackground(color);

     }

    }

    );

 

  tool.add(fontSum);

  //tool.add(setfont);

  tool.add(setFontColor);

  tool.add(setcolor);

  // 帮助菜单

  help = new JMenu("帮助(H)");

  help.setMnemonic('H');//设置快捷键

  about = new JMenuItem("关于(P)");

  about.setMnemonic('P');//设置快捷键

  about.addActionListener(new ActionListener() {

   public void actionPerformed(ActionEvent event) {

    JOptionPane.showMessageDialog(container, "Java记事本", "关于",

      JOptionPane.INFORMATION_MESSAGE);

   }

  });

  help.add(about);

  menuBar.add(menu);

  menuBar.add(edit);

  menuBar.add(view);

  menuBar.add(tool);

  menuBar.add(help);

  // popupMenu右键弹出式菜单

  pop = new JPopupMenu();

  popUndo = new JMenuItem("撤销");

  popUndo.addActionListener(new ActionListener() {

   public void actionPerformed(ActionEvent event) {

    if (manager.canUndo())

     manager.undo();

   }

  });

  popRedo = new JMenuItem("重做");

  popRedo.addActionListener(new ActionListener() {

   public void actionPerformed(ActionEvent event) {

    if (manager.canRedo())

     manager.redo();

   }

  });

  popCut = new JMenuItem("剪切");

  popCut.addActionListener(new ActionListener() {

   public void actionPerformed(ActionEvent event) {

    text.cut();

   }

  });

  popCopy = new JMenuItem("复制");

  popCopy.addActionListener(new ActionListener() {

   public void actionPerformed(ActionEvent event) {

    text.copy();

   }

  });

  popSelectAll = new JMenuItem("全部选择");

  popSelectAll.addActionListener(new ActionListener() {

   public void actionPerformed(ActionEvent event) {

    text.selectAll();

   }

  });

  popCopyAll = new JMenuItem("全部复制");

  popCopyAll.addActionListener(new ActionListener() {

   public void actionPerformed(ActionEvent event) {

    text.selectAll();

    text.copy();

   }

  });

  popPaste = new JMenuItem("粘贴");

  popPaste.addActionListener(new ActionListener() {

   public void actionPerformed(ActionEvent event) {

    text.paste();

   }

  });

  popDelete = new JMenuItem("删除");

  popDelete.addActionListener(new ActionListener() {

   public void actionPerformed(ActionEvent event) {

    text.replaceRange("", text.getSelectionStart(), text

      .getSelectionEnd());

   }

  });

  popClear = new JMenuItem("清空");

  popClear.addActionListener(new ActionListener() {

   public void actionPerformed(ActionEvent event) {

    text.setText("");

   }

  });

  //添加组件

  pop.add(popUndo);

  pop.add(popRedo);

  pop.addSeparator();

  pop.add(popCut);

  pop.add(popCopy);

  pop.add(popPaste);

  pop.add(popCopyAll);

  pop.add(popSelectAll);

  pop.add(popDelete);

  pop.add(popClear);

  text.add(pop);

  text.addMouseListener(new MouseAdapter() {  //鼠标右键单击事件

   public void mouseReleased(MouseEvent event) {

    if (event.isPopupTrigger()) {

     pop.setVisible(true);

     pop.show(text, event.getX(), event.getY());

    }

   }

  });

  status = new JTextField();

  status.setEditable(false);

  container.add(status, BorderLayout.SOUTH);

  setSize(730, 660);

  // pack();

  container.add(menuBar, BorderLayout.NORTH);

  Dimension frameSize = getSize();

  Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

  setLocation((screenSize.width - frameSize.width) / 2,

    (screenSize.height - frameSize.height) / 2);

  setVisible(true);

  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

 

 }

 public static void main(String args[]) {

  new NotePad();

 }

 private void keepOnTop(boolean b){

  setAlwaysOnTop(b);

 }

 private class Search extends JFrame {

  private JTabbedPane tab;

  private Container cont;

  // 查找

  private JPanel searPanel;

  private JTextField searField;

  private JButton searButton;

  // 替换

  private JPanel replPanel;

  private JPanel buttonPanel;

  private JTextField replField;

  private JButton replButton;

  private JLabel label;

  private JTextField replSear;

  public Search() {

   super("查找与替换");

   cont = getContentPane();

   tab = new JTabbedPane(JTabbedPane.TOP);

   // 查找

   searPanel = new JPanel(new FlowLayout());

   searField = new JTextField(15);

   searButton = new JButton("查找下一处");

   searPanel.add(searField);

   searPanel.add(searButton);

   searButton.addActionListener(new ActionListener() {    //注册查找动作监听

    public void actionPerformed(ActionEvent event) {    //注册事件侦听器

     String searText = searField.getText().trim();

     if (searText.equals("")) {

      JOptionPane.showMessageDialog(cont, "查找串为空", "提示信息",JOptionPane.INFORMATION_MESSAGE);

     } else {

      String allText = text.getText();

      int start = allText.indexOf(searText, text.getSelectionEnd());

      if (start == -1)

       JOptionPane.showMessageDialog(container,"已到达文件末尾,没有找到\n" + searText, "提示信息",JOptionPane.INFORMATION_MESSAGE);

      else

       text.select(start, start + searText.length());

     }

    }

   });

   // 替换

   replPanel = new JPanel(new GridLayout(3, 1));

   buttonPanel = new JPanel(new FlowLayout());

   label = new JLabel("替换为");

   replField = new JTextField(15);

   replSear = new JTextField(15);

   replButton = new JButton("替换下一处");

   replButton.addActionListener(new ActionListener() {    //注册替换动作监听

    public void actionPerformed(ActionEvent event) {

     String searText = replSear.getText();

     if (searText.equals("")) {

      JOptionPane.showMessageDialog(cont, "要替换的串为空", "提示信息", JOptionPane.INFORMATION_MESSAGE);

     } else {

      String allText = text.getText();

      int start = allText.indexOf(searText, text.getSelectionEnd());

      if (start == -1)

       JOptionPane.showMessageDialog(container, "替换完毕","提示信息", JOptionPane.INFORMATION_MESSAGE);

      else

       text.replaceRange(replField.getText(), start, start + searText.length());

     }

    }

   });

   replPanel.add(replSear);

   replPanel.add(label);

   replPanel.add(replField);

   buttonPanel.add(replButton);

   JPanel panel = new JPanel(new FlowLayout());

   panel.add(replPanel);

   panel.add(buttonPanel);

   tab.addTab("查找", searPanel);

   tab.addTab("替换", panel);

   tab.setVisible(true);

   cont.add(tab);

   pack();

   Point paraLoca = container.getLocationOnScreen();

   setLocation(paraLoca.y + getSize().width, paraLoca.x

     + getSize().height);

   setVisible(true);

   setResizable(false);

   addWindowListener(new WindowAdapter() { 

    public void windowClosing() {

     dispose();

    }

   });

  }

 }

 private class filter extends javax.swing.filechooser.FileFilter {

  public boolean accept(File file){

   String name = file.getName().toLowerCase();

   if(name.endsWith(".txt") || name.endsWith(".cmd") ||file.isDirectory() ||

     name.endsWith(".sql") || name.endsWith(".properties") || name.endsWith(".java") ||

     name.endsWith(".cpp") || name.endsWith(".c") || name.endsWith(".css") ||

     name.endsWith(".js") || name.endsWith(".xml") || name.endsWith(".html") ||

     name.endsWith(".log"))

    return true;

   else

    return false;

  }

  public String getDescription(){

   return ".txt | .cmd | .sql |.properties | .java | .cpp | .c | .css | .js | .xml | .html |.log";

  }

 }

}

五.实训小结

了解常用类的属性和方法,我发现在用常用类的时候,经常会把类里面的方法和自定义的方法搞混。通过实训我更加认识到了Java强大的功能,丰富了我的知识,提高运用java语言解决实际问题的能力。

相关推荐