大学JAVA实验四 简单计算器、记事本

大学JAVA实验

 

这几天一直在重装系统,主要因为SQLSERVER2000安装不成功,直到今天上午才安装成功,最后发现原来一直是瑞星在搞鬼,气死了。

 

今天下午才开始做实验,由于时间仓促,只是完成实验的要求部分,并没有进行多少代码优化,也没有对界面进行美化,等有空再改善一下吧

 

10月27日早晨修改加强

 

 

实验时发现实验室里的JDK5.0与我的6.0有冲突,所以在实验室不能运行,只要将5.0卸载,安装6.0即可

 

在实验室补充了记事本的编辑里的清空功能等

 

11月1号晚上,更改了计算器及记事本窗口左上方的咖啡图标,换成了我喜欢的图片

 

1、构造简单计算器界面,并实现加、减、乘、除运算。

 

Calculator.java

 

//package first;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Calculator extends JFrame {

 private static final long serialVersionUID = 1L;// 这个不知道是干什么的

 private JPanel optPanel;

 private JPanel numPanel;

 private Label resultLabel;

 private String[] optName = { "Back", "CE", "C" };// 三个操作按钮的名字,退格,清除,清空

 private String[] numName = { "7", "8", "9", "+", "4", "5", "6", "-", "1",
   "2", "3", "*", "0", ".", "=", "/" };// 数字按钮的名字,包括四个运算符

 private JButton[] optButton = new JButton[3];// 三个操作按钮

 private JButton[] numButton = new JButton[16];// 数字按钮,包括四个运算符

 EventListener eventListener = new EventListener();// 创建事件监听者

 public Calculator(String title) {// 创建主窗口,title为窗口名称
  super(title);

  ImageIcon icon=new ImageIcon("195032.jpg"); //更改了窗口左上方的咖啡图标,换成了我喜欢的图片,图片名为195032.jpg
  setIconImage(icon.getImage());


  resultLabel = new Label("0.", Label.RIGHT);// 显示器,显示内容靠右,比较符合实际
  optPanel = new JPanel();// 放三个操作按钮
  numPanel = new JPanel();// 放数字等

  optPanel.setLayout(new GridLayout(1, 3, 2, 2));// 一行三列
  numPanel.setLayout(new GridLayout(4, 4, 2, 2));// 四行四列,16个位置

  super.add(resultLabel, BorderLayout.NORTH);// 显示器在最上面
  super.add(optPanel, BorderLayout.CENTER);// 三个操作按钮在中间
  super.add(numPanel, BorderLayout.SOUTH);// 数字等在下面

  for (int i = 0; i < optName.length; i++) {// 为每个数字按钮等添加事件监听器并加入操作面板中
   optButton[i] = new JButton(optName[i]);
   optButton[i].addActionListener(eventListener);
   optPanel.add(optButton[i]);
  }

  for (int i = 0; i < numName.length; i++) {// 为每个操作按钮等添加事件监听器并加入操作面板中
   numButton[i] = new JButton(numName[i]);
   numButton[i].addActionListener(eventListener);
   numPanel.add(numButton[i]);
  }

  super.addWindowListener(new WindowAdapter() {// 关闭主面板

     @Override
     public void windowClosing(WindowEvent arg0) {
      System.exit(0);
     }

    });

  super.setBounds(400, 300, 250, 200);
  super.setResizable(false);// 计算机不能改变大小
  super.setVisible(true);

 }

 class EventListener implements ActionListener {// 设计监听者类

  double result;// 两个运算数运算完后得到的结果

  double firstNum;// 第一个运算数

  double secondNum;// 第二个运算数

  String showResult = "";// 显示器上显示的结果

  String fuhao;// 运算符,+,-,*,/

  String caozuo;

  String temp;// 每按一个按钮的值

  @Override
  public void actionPerformed(ActionEvent ae) {// 重写处理方法

   for (int i = 0; i < numName.length; i++) {
    if (ae.getSource() == numButton[i]) {

     String temp = numButton[i].getText();

     if (temp.equals("+") || temp.equals("-")
       || temp.equals("*") || temp.equals("/")) {
      firstNum = Double.parseDouble(showResult);
      fuhao = temp;
      resultLabel.setText(fuhao);
      showResult = "";
      // System.out.println(firstNum*2);//测试
     } else if (temp.equals("=")) {
      secondNum = Double.parseDouble(showResult);

      if (fuhao.equals("+")) {
       result = firstNum + secondNum;
       resultLabel.setText("" + result);
      } else if (fuhao.equals("-")) {
       result = firstNum - secondNum;
       resultLabel.setText("" + result);
      } else if (fuhao.equals("*")) {
       result = firstNum * secondNum;
       resultLabel.setText("" + result);
      } else if (fuhao.equals("/")) {
       result = firstNum / secondNum;
       resultLabel.setText("" + result);
      }
      // System.out.println(secondNum*3);//测试
     } else {
      showResult += temp;
      resultLabel.setText(showResult);
     }
    }
   }

   if (ae.getSource() == optButton[0]) {// 退格
    if (showResult.length() > 0) {
     showResult = showResult.substring(0,
       showResult.length() - 1);
     resultLabel.setText(showResult);
    } else {
     showResult = "";
     resultLabel.setText(showResult);
    }
    // caozuo = optButton[0].getLabel();
   } else if (ae.getSource() == optButton[1]) {// 清除当前的输入数,如之前已存在了第一个运算数,不影响第一个运算数
    showResult = "";
    resultLabel.setText(showResult);
    temp = "";
    // caozuo = optButton[1].getLabel();
   } else if (ae.getSource() == optButton[2]) {// 清空所有的数字及运算符,回到初始状态
    // caozuo = optButton[2].getLabel();
    showResult = "";
    resultLabel.setText(showResult);
    temp = "";
    fuhao = "";
   }
  }
 }

 public static void main(String[] args) {
  new Calculator("Calculator");// 创建实例
 }
}

 

 

 

 

2、仿Windows系统中的“记事本”,编写一个记事本软件,可以完成文件的新建、打开、编辑与保存(如果时间充裕,可考虑实现更多的功能)。

 

Notepad.java

 

//package second;

import java.awt.FileDialog;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

public class Notepad extends JFrame {

 private static final long serialVersionUID = 1L;

 JMenuBar menubar;

 JMenu wenjian, bianji, geshi, chuangkou, bangzhu;

 TextArea wenjianqu;

 private FileDialog fileload;

 private FileDialog filesave;

 private String file = "";

 EventListener eventlistener = new EventListener();

 public Notepad(String title) {
  super(title);

  ImageIcon icon=new ImageIcon("195032.jpg"); //更改了窗口左上方的咖啡图标,换成了我喜  欢的图片,图片名为195032.jpg
  setIconImage(icon.getImage());

  wenjianqu = new TextArea();// 文本编辑区
  super.add(wenjianqu);

  menubar = new JMenuBar();

  wenjian = new JMenu("文件");// 文件菜单
  bianji = new JMenu("编辑");// 编辑菜单
  geshi = new JMenu("格式");// 格式菜单
  chuangkou = new JMenu("窗口");// 窗口菜单
  bangzhu = new JMenu("帮助");// 帮助菜单

  // 文件菜单的菜单项
  JMenuItem xinjian = new JMenuItem("新建");
  JMenuItem dakai = new JMenuItem("打开");
  JMenuItem baocun = new JMenuItem("保存");
  JMenuItem lingcunwei = new JMenuItem("另存为");
  JMenuItem tuichu = new JMenuItem("退出");

  // 为文件菜单的菜单项添加监听者
  xinjian.addActionListener(eventlistener);
  dakai.addActionListener(eventlistener);
  baocun.addActionListener(eventlistener);
  lingcunwei.addActionListener(eventlistener);
  tuichu.addActionListener(eventlistener);

  // 文件菜单添加菜单项
  wenjian.add(xinjian);
  wenjian.add(dakai);
  wenjian.add(baocun);
  wenjian.add(lingcunwei);// 分隔符
  wenjian.addSeparator();
  wenjian.add(tuichu);

  JMenuItem qingkong = new JMenuItem("清空");

  qingkong.addActionListener(eventlistener);

  bianji.add(qingkong);

  // 向菜单条添加菜单
  menubar.add(wenjian);
  menubar.add(bianji);
  menubar.add(geshi);
  menubar.add(chuangkou);
  menubar.add(bangzhu);

  // 帮助菜单的菜单项
  JMenuItem bangzguzguti = new JMenuItem("帮助主题");
  JMenuItem aboutme = new JMenuItem("关于记事本");

  // 帮助菜单添加菜单项
  bangzhu.add(bangzguzguti);
  bangzhu.add(aboutme);

  fileload = new FileDialog(this, "打开文件-----XiaoHuanJie", FileDialog.LOAD);
  filesave = new FileDialog(this, "保存文件-----XiaoHuanJie", FileDialog.SAVE);

  super.setJMenuBar(menubar);
  super.setLocation(250, 200);
  super.setSize(600, 400);
  super.setVisible(true);
  super.setResizable(true);

  super.addWindowListener(new WindowAdapter() {

   @Override
   public void windowActivated(WindowEvent e) {
    // TODO Auto-generated method stub
    super.windowActivated(e);
   }

   @Override
   public void windowClosing(WindowEvent arg0) {
    System.exit(0);
   }

  });

 }

 class EventListener implements ActionListener {

  @Override
  public void actionPerformed(ActionEvent ae) {
   String command = ae.getActionCommand();
   if (command.equals("退出")) {
    System.exit(0);
   } else if (command.equals("新建")) {

   } else if (command.equals("打开")) {
    fileload.setVisible(true);
    String direct = fileload.getDirectory();
    String filename = fileload.getFile();

    if ((direct != null) && (filename != null)) {
     file = direct + filename;
     loadFile();
    }
   } else if (command.equals("保存")) {
    saveFile();

   } else if (command.equals("另存为")) {
    saveAs();
   } else if (command.equals("新建")) {
    newFile();
   } else if (command.equals("清空")) {
    qingkongFile();
   }
  }
 }

 public void loadFile() {
  wenjianqu.setText("");
  super.setTitle("我的记事本---" + file);

  try {
   BufferedReader br = new BufferedReader(new FileReader(file));
   String reader = br.readLine();

   while (reader != null) {
    wenjianqu.append(reader + "/n");
    reader = br.readLine();
   }
   br.close();
  } catch (FileNotFoundException e) {
   System.out.println("目标文件:" + file + "找不到!");
   // e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }

 public void saveFile() {
  String dangqianwenjian = wenjianqu.getText();
  try {
   if (file.isEmpty()) {
    filesave.setVisible(true);
    String direct = filesave.getDirectory();
    String filename = filesave.getFile();

    if ((direct != null) && (filename != null)) {
     file = direct + filename;
     PrintWriter pw = new PrintWriter(new FileWriter(file));
     pw.println(dangqianwenjian);
     pw.flush();
     pw.close();
     super.setTitle("我的记事本---" + file);
    }
   } else {
    PrintWriter pw = new PrintWriter(new FileWriter(file));
    pw.println(dangqianwenjian);
    pw.flush();
    pw.close();
   }
  } catch (IOException e) {
   e.printStackTrace();
  }
 }

 public void saveAs() {
  filesave.setVisible(true);
  String direct = filesave.getDirectory();
  String filename = filesave.getFile();

  if ((direct != null) && (filename != null)) {
   file = direct + filename;
   saveFile();
   super.setTitle("我的记事本---" + file);
  }
 }

 public void qingkongFile() {
  wenjianqu.setText("");
 }

 public void newFile() {
  super.setTitle("我的记事本---" + "新建文件");
  wenjianqu.setText("");
 }

 public static void main(String[] args) {
  new Notepad("我的记事本");
 }

}

 

 

 

 

 

你可能感兴趣的:(java,String,File,null,Class,sqlserver)