@TOC Java声效计算器(带有十进制转二进制和十六进制的功能)

声明:

这是我们学校老师布置的一次期末课设,我在课下看了一些关于Java用户图形界面的书,又结合北大教授的讲课的内容,完成了这次课设。我对比较难理解的代码和重要代码已经注释,如果我有哪一部分写的不明白的地方请大家在评论区留言。

设计思路:

首先运用swing.JFrame生成框架,再用swing.JPanel生成三个面板,分别用布局管理器对他们进行管理。添加音效,首先得把音效文件放到确定的路径,再把路径按照我写的代码格式编写就OK了。

计算器实现功能:

实现基本的加、减、乘、除等基本用法,除此之外还添加了十进制转二进制和十六进制的功能。
每次按完图形界面上的按钮就会发出声音

代码部分:

package 计算器;

import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.math.BigInteger;

import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.WindowConstants;

import sun.audio.AudioPlayer;
import sun.audio.AudioStream;
public class Calculator extends JFrame implements ActionListener {
private final String[] str={
“7”, “8”, “9”, “/”,
“4”, “5”, “6”, “*”,
“1”, “2”, “3”, “-”,
“.”, “0”, “=”, “+”
};
JButton[] buttons =new JButton[str.length];
JButton reset =new JButton(“CE”);
JButton t16 =new JButton(“hex”);
JButton t2 =new JButton(“binary”);
JTextField display = new JTextField(">>>Welcome<<<");

public Calculator() {Font font =new Font("Consolas",Font.BOLD,18);//粗体

// add components
JPanel pnlHead = new JPanel(new BorderLayout());
JPanel pnlend = new JPanel(new BorderLayout());
pnlHead.add(display,BorderLayout.CENTER);
pnlHead.add(reset,BorderLayout.EAST);
pnlend.add(t16,BorderLayout.EAST);
pnlend.add(t2,BorderLayout.CENTER);
display.setFont(font);
reset.setFont(font);
t16.setFont(font);
t2.setFont(font);

 JPanel pnlBody =new JPanel(new GridLayout(4,4));for(int i=0;i<str.length;i++){buttons[i]=new JButton(str[i]);buttons[i].setFont(font);pnlBody.add(buttons[i]);}getContentPane().setLayout(new BorderLayout());getContentPane().add("North", pnlHead);getContentPane().add("Center", pnlBody);getContentPane().add("South", pnlend);

// set frame properties
for(int i=0;i<str.length;i++)
buttons[i].addActionListener(this);
reset.addActionListener(this);//
display.addActionListener(this);//
t16.addActionListener(this);//
t2.addActionListener(this);

// set frame properties
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setSize(300,300);
setLocation(500, 150);
setVisible(true);
}

@Override
public void actionPerformed(ActionEvent arg0) {Object target =arg0.getSource();//定义事件发出的对象String cmd = arg0.getActionCommand();//定义事件所发出的对象的名称if(target==reset){handleReset();playMusic1();}else if(target==t16){ playMusic2();BigInteger src = new BigInteger(display.getText());// display.setText(src.toString(16));}else if(target==t2){playMusic2();BigInteger src = new BigInteger(display.getText());// display.setText(src.toString(2));}else if (" 0123456789.".indexOf(cmd)>0){//遍历当前字符串 ***handleNumber(cmd);playMusic2();}else {handleOperator(cmd);playMusic2();}// TODO Auto-generated method stub}
boolean isFirstDigit = true;//**
double number = 0.0;
String operator = "=";//public void handleNumber(String key){if(isFirstDigit)display.setText(key);else if(!key.equals("."))display.setText(display.getText()+key);else if(display.getText().indexOf(".")<0)display.setText(display.getText()+".");isFirstDigit =false;
}//**public void handleReset(){display.setText("Thanks for using it.");isFirstDigit =true;operator ="=";
}public void handleOperator(String cmd){double dDisplay =Double.valueOf(display.getText());//每次都会附给它!!!**switch(operator){case"+":number+=dDisplay;break;case"-":number-=dDisplay;break;case"*":number*=dDisplay;break;case"/":number/=dDisplay;break;case"=":number=dDisplay;break;}display.setText(String.valueOf(number));operator =cmd;isFirstDigit = true;
}//***public void playMusic1(){String path1="D:\\96\\Ce.wav" ;//必须得把路径设置为字符型!!!!try {FileInputStream fileau=new  FileInputStream(path1);AudioStream as=new AudioStream(fileau);AudioPlayer.player.start(as);}catch (Exception e) {e.printStackTrace();}
}public void playMusic2(){String path2="D:\\96\\Aj.wav" ;//必须得把路径设置为字符型!!!!try {FileInputStream fileau=new  FileInputStream(path2);AudioStream as=new AudioStream(fileau);AudioPlayer.player.start(as);}catch (Exception e) {e.printStackTrace();}
}public static void main(String[] args) {// TODO Auto-generated method stubnew Calculator();
}

}

运行结果:


Java声效计算器(带有十进制转二进制和十六进制的功能)相关推荐

  1. java中各进制之间的转换(十进制转十六进制、十进制转二进制、二进制转十进制、二进制转十六进制)...

    在java编辑中有没有遇到经常需要进行java中各进制之间的转换(十进制转十六进制.十进制转二进制.二进制转十进制.二进制转十六进制)的事情呢?下面我们就来分析一下各自是怎么转换的: [java] / ...

  2. C语言二位十进制计算器模数,十进制转二进制计算器

    win10系统之家今天精心准备的是<十进制转二进制计算器>,下面是详解! 怎样用电脑计算器计算二进制 用电脑计算器计算二进制的具体操作步骤如下: 1.首先在电脑桌面上点击左下角的" ...

  3. Java算法学习:java进制转换(十进制转八进制,十进制转二进制,十六进制转八进制)

    java进制转换(十进制转八进制,十进制转二进制,十六进制转八进制) 这几天在复习C语言的数据结构栈和队列那一章的时候,看到利用栈的特性FILO实现的进制转换十分简洁 想起了java中实现栈的操作十分 ...

  4. 十进制转换成十六进制c语言 链栈,C语言 链栈 实现十进制转换二进制,八进制,十六进制...

    C语言 链栈 实现十进制转换二进制,八进制,十六进制 (3页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 11.90 积分 最后运行结果:代码:#incl ...

  5. 十进制转二进制 / 八进制 / 十六进制的手算方法,及其数学原理的通俗解释

    前言:接触计算机的同学学习基础课程时,不免会碰到十进制转二进制 / 八进制 / 十六进制这种问题.常见的方法有"除以2/8/16看余数".本文在介绍方法的前提上,对其数学原理进行了 ...

  6. 在BASH下简单实现十进制到二进制和十六进制的转换

    #!/bin/bash #scriptname:conver #在BASH下简单实现十进制到二进制和十六进制的转换 cat<<info 1] 10=>2 2] 10=>16 i ...

  7. 十进制转换为二进制和十六进制

    十进制转换为二进制和十六进制 一.十进制数转化为二进制 整数除以2,商继续除以2,得到0为止. 以23为例: 23/2 11余1 11/2 5 余 1 5 /2 2余 1 2 /2 1余 0 1 /2 ...

  8. Java 实验5 T3 将十进制转换为二进制

    题目 将十进制转换为二进制 代码 import java.util.Scanner;public class chapter5_3 {public static void main(String[] ...

  9. JAVA复习【10】十进制转换为二进制

    十进制转换为二进制 方法一:直接使用转换函数 // 将数字转换成字符串 Integer.toString(num); // 将数字转换成二进制 Integer.toBinaryString(num); ...

最新文章

  1. linux cp 强制覆盖
  2. 剑客决斗(NYOJ 110)
  3. transformers tokenizer_summary
  4. python爬虫 入门+进阶_python爬虫入门到进阶(三)
  5. Linux中使用sftp的常用命令
  6. java引用型变量_java-有没有办法用类型变量引用当前类型?
  7. Linux下idea 配置Android SDK
  8. Java整人程序-电脑关机
  9. 黑域 绿色守护 安卓最好的省电工具?
  10. 学习网络技术的一些常用论坛和网站
  11. 电驱系列:直流无刷马达(不用芯片,独立元器件搭建)
  12. 最简单容易的四格漫画制作软件 Comic Strip Factory for Mac
  13. Python开发培训怎么样?
  14. hdu1429 胜利大逃亡(续)
  15. 修改谷歌浏览器缓存位置总结
  16. PS人物换装--白色换纯色
  17. Word基础(三十四)引文与书目
  18. Servlet的执行原理
  19. AutoCAD中凸度的概念以及求圆弧的凸度
  20. 快速实现免费的个人免签收款功能(不写一行代码)

热门文章

  1. 基于STM32的高精度温度测控系统-原理图设计
  2. NTVDM CPU 遇到无效的指令的解决方法大全
  3. go开发中遇到的问题
  4. 使用matlab绘制弧线,MATLAB求解叶型中弧线
  5. 收集了几个有趣的代码注释
  6. html框架集frame是啥意思,HTML框架frame与iframe详解
  7. POJ 3265 Problem Solving
  8. python——基础题
  9. 恐鬼症服务器显示不出来怎么办,恐鬼症常见问题_恐鬼症bug问题_Phasmophobia出问题怎么办_游侠网...
  10. Vue实现push数组并删除方法