社区
Java
帖子详情
怎么用JAVA窗口编写一个计算器
denglisoft
2011-12-18 09:03:25
求指教,怎么用JAVA窗口编写一个简单的计算器(+-*/),球算法及思路,有代码更好 。。。谢谢
...全文
1167
6
打赏
收藏
怎么用JAVA窗口编写一个计算器
求指教,怎么用JAVA窗口编写一个简单的计算器(+-*/),球算法及思路,有代码更好 。。。谢谢
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wo_cainiao9009
2013-01-07
打赏
举报
回复
能不能做个有按钮的计算器啊?
wo_cainiao9009
2013-01-07
打赏
举报
回复
学习了,,,,。
xiangyatafeiying
2011-12-18
打赏
举报
回复
[Quote=引用 3 楼 wangshuaitony 的回复:]
还有一个例子程序,有详细注释,你也可以参考一下
//问题是键盘事件和actionevent不能相互监听,还有快捷键怎样输入?例如backspace
import javax.swing.*; //开展的GUI工具包
import java.math.*;
import java.awt.*;
import java.awt.event.*;
//计算器类,只响应鼠标点击按钮时间
……
[/Quote]这个不错,“”“”“”“”“”“”“”“”“”
真的
wangshuaitony
2011-12-18
打赏
举报
回复
还有一个例子程序,有详细注释,你也可以参考一下
//问题是键盘事件和actionevent不能相互监听,还有快捷键怎样输入?例如backspace
import javax.swing.*; //开展的GUI工具包
import java.math.*;
import java.awt.*;
import java.awt.event.*;
//计算器类,只响应鼠标点击按钮时间
public class Calculator1 implements ActionListener,KeyListener{
//逻辑变量标志是输入的是否首位数,false标志首位
private boolean append = false;
JTextField jtf = new JTextField(10);//这里的10表示什么?????????????
//计算器显示框
private String operator; //保存运算符
private String op1;
Label lb=new Label();
String s ;
//保存运算操作数1
//中断响应方法(接口中的虚方法actionPerformed)
public void actionPerformed(ActionEvent ae){
//点击的按钮名称记录在comm变量
String comm = ae.getActionCommand();
//判断点击了什么按钮
if("0123456789".indexOf(comm)!=-1){ //indexOf(String str)
// 返回指定子字符串在此字符串中第一次出现处的索引
//点击了数字键
if(append){ //不是首位数
//计算器显示框连接显示
String temp = jtf.getText();
jtf.setText(temp+comm);
}else{ //是首位数
jtf.setText(comm);
append = true; //置非首位数标志
}
}else if("+-*/".indexOf(comm)!=-1){
//点击了+-*/运算符
op1 = jtf.getText(); //保存运算操作数
operator = comm; //保存运算符
append = false; //置首位数标志
}else if("=".equals(comm)){ //点击了=运算符
String op2 = jtf.getText(); //保存运算操作数2
BigDecimal d1 = new BigDecimal(op1);
//字符串到到大实数
BigDecimal d2 = new BigDecimal(op2);
if("+".equals(operator)){
d1 = d1.add(d2); //大实数类的成员方法
}else if("-".equals(operator)){
d1 = d1.subtract(d2);
}else if("*".equals(operator)){
d1 = d1.multiply(d2);
}else{
d1 = d1.divide(
d2,10,BigDecimal.ROUND_HALF_UP);
}
jtf.setText(d1.toString()); //显示结果
append = false; //本次运算结束,置首位数标志
}else if(".".equals(comm)){ //点击了小数点键
String temp = jtf.getText();
if(temp.indexOf(comm)==-1){
jtf.setText(temp+"."); //串连接
append = true; //置非首位数标志
}
}else if("+/-".equals(comm)){ //点击了符号求反键
String temp = jtf.getText();
if(temp.startsWith("-")){
jtf.setText(temp.substring(1));
}else{
jtf.setText("-"+temp);
}
}else if("Back".equals(comm)){
//点击了Back键
String temp = jtf.getText();
if(temp.length()>0){ //删除最后一位
jtf.setText(
temp.substring(0,temp.length()-1));
}
}else if("CE".equals(comm)|| "C".equals(comm)
){
jtf.setText("0"); //CE键清零
append = false;
}
}
//构造方法定义界面
public Calculator1(){
JFrame jf = new JFrame("算数计算器"); //窗口
JPanel jp = new JPanel();//面板
//字符串数组:定义按钮名称
String[] lab = {"Back","CE","C","+","7",
"8","9","-","4","5","6","*","1","2",
"3","/","0",".","+/-","="};
jp.setLayout(new GridLayout(5,4));
//面板布局
jtf.setEditable(false); //计算器显示框不能输入
//按钮组件按数组生成
JButton[] jb = new JButton[lab.length];
jf.add(jtf,BorderLayout.NORTH);
//计算器显示框钉上窗口
for(int i=0;i<jb.length;i++){
jb[i] = new JButton(lab[i]);
jp.add(jb[i]); //按钮组件逐一钉上面板
jb[i].addActionListener(this);
}
jf.add(jp);//面板钉上窗口
jf.setSize(300, 200); //设置窗口属性
jf.setLocation(350, 250);
jf.setResizable(false);
jf.setVisible(true);
jtf.addKeyListener(this);
///设置窗口属性:可关闭性
jf.setDefaultCloseOperation(
JFrame.EXIT_ON_CLOSE);
}
//main方法,定义本类的对象,激活构造方法
public static void main(String[] args) {
new Calculator1();
}
public void keyPressed(KeyEvent e) {
char c = e.getKeyChar();
s=String.valueOf(c);
if("0123456789".indexOf(s)!=-1){ //indexOf(String str)
// 返回指定子字符串在此字符串中第一次出现处的索引
//点击了数字键
if(append){ //不是首位数
//计算器显示框连接显示
String temp = jtf.getText();
jtf.setText(temp+s);
}else{ //是首位数
jtf.setText(s);
append = true; //置非首位数标志
}
}else if("+-*/".indexOf(s)!=-1){
//点击了+-*/运算符
op1 = jtf.getText(); //保存运算操作数
operator = s; //保存运算符
append = false; //置首位数标志
}else if("=".equals(s)){ //点击了=运算符
String op2 = jtf.getText(); //保存运算操作数2
BigDecimal d1 = new BigDecimal(op1);
//字符串到到大实数
BigDecimal d2 = new BigDecimal(op2);
if("+".equals(operator)){
d1 = d1.add(d2); //大实数类的成员方法
}else if("-".equals(operator)){
d1 = d1.subtract(d2);
}else if("*".equals(operator)){
d1 = d1.multiply(d2);
}else{
d1 = d1.divide(
d2,10,BigDecimal.ROUND_HALF_UP);
}
jtf.setText(d1.toString()); //显示结果
append = false; //本次运算结束,置首位数标志
}else if(".".equals(s)){ //点击了小数点键
String temp = jtf.getText();
if(temp.indexOf(s)==-1){
jtf.setText(temp+"."); //串连接
append = true; //置非首位数标志
}
}else if("+/-".equals(s)){ //点击了符号求反键
String temp = jtf.getText();
if(temp.startsWith("-")){
jtf.setText(temp.substring(1));
}else{
jtf.setText("-"+temp);
}
}else if("b".equals(s)){
//点击了Back键
String temp = jtf.getText();
if(temp.length()>0){ //删除最后一位
jtf.setText(
temp.substring(0,temp.length()-1));
}
}else if("c".equals(s)){
jtf.setText("0");//CE键清零
append = false;
}
}
public void keyReleased(KeyEvent arg0) {}
public void keyTyped(KeyEvent arg0) {}
}
wangshuaitony
2011-12-18
打赏
举报
回复
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.*;
public class jiafa extends Frame implements ActionListener {
TextField txt1;
TextField txt2;
TextField txt3;
Button bt1;
Label lab1,lab2;
Panel p1,p2;
public jiafa(){
super("加法运算器");
this.setLayout(new BorderLayout());
this.setSize(400,300);
this.setLocation(100,100);
this.setVisible(true);
txt1=new TextField(8);
txt2=new TextField(8);
txt3=new TextField(8);
lab1=new Label("+");
lab2=new Label("=");
bt1=new Button("运算");
p1=new Panel();
p2=new Panel();
p1.setLayout(new FlowLayout());
add(p1,BorderLayout.NORTH);
add(p2,BorderLayout.CENTER);
p1.add(txt1);
p1.add(lab1);
p1.add(txt2);
p1.add(lab2);
p1.add(txt3);
p2.add(bt1);
txt2.addActionListener(this);
bt1.addActionListener(this);
this.addWindowListener(new WindowDestroyer());
}
public void actionPerformed(ActionEvent e) {
//if(e.getSource()==bt1){
int sum;
sum=Integer.parseInt(txt1.getText())+Integer.parseInt(txt2.getText());
txt3.setText(String.valueOf(sum));
//}
}
/**
* @param args
*/
public static void main(String[] args) {
new jiafa();
}
}
我以前写的一个加法运算器,很简单,其他的自己做就可以了
ncist_jianeng
2011-12-18
打赏
举报
回复
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class JiSuanQi{
public static void main(String[] args) {
JFrame frame=new JFrame();
frame.setLayout(new FlowLayout());
frame.setSize(500,100);
final JTextField text1=new JTextField(10);
final JTextField text2=new JTextField(10);
final JTextField text3=new JTextField(10);
JButton button1=new JButton("+");
button1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
int a=Integer.parseInt(text1.getText());
int b=Integer.parseInt(text2.getText());
text3.setText(String.valueOf(a+b));
}
});
frame.add(text1);
frame.add(text2);
frame.add(button1);
frame.add(text3);
frame.setVisible(true);
}
}
这个界面你可以自己优化。还有就是我只写了一种运算,其他运算可按这个自己写
Java
编写
一个
计算器
程序.pdf
1.
Java
编程语言基础:文件提到了
Java
,这表明使用
Java
编程语言来
编写
计算器
程序。
Java
是一种广泛使用的面向对象的编程语言,具有跨平台的特性。它提供了一套丰富的标准库,允许开发者
编写
各种类型的应用程序,包括...
java
编写
的
一个
计算器
在
编写
计算器
时,
Java
的类和对象概念尤为重要。
计算器
可以被看作是
一个
系统,由多个类组成,如`Calculator`类、`Button`类、`Display`类等。`Calculator`类负责执行计算逻辑,`Button`类代表屏幕上的每个按钮,`...
java
eclipse
编写
的简单
计算器
(界面编程)
在
Java
编程环境中,Eclipse是
一个
广泛使用的集成开发环境(IDE),尤其适合进行
Java
应用程序和Web应用的开发。在这个项目中,我们关注的是如何利用Eclipse创建
一个
简单的图形用户界面(GUI)
计算器
。这个
计算器
能够...
用
java
编写
的科学
计算器
在这个场景中,我们关注的是
一个
特定的项目——
一个
用
Java
编写
的科学
计算器
。科学
计算器
不仅具备基本的四则运算,还提供更高级的数学功能,如对数、指数、三角函数、复数运算等,对于学习者和专业人士来说非常实用。...
java
编写
的
计算器
Java
编写
的
计算器
是
一个
基础但实用的编程项目,它展示了如何使用
Java
语言来实现
一个
图形用户界面(GUI)程序。这个
计算器
可能包含了基本的数学运算,如加、减、乘、除,以及可能的一些特殊功能,如求平方根、百分比...
Java
51,396
社区成员
85,838
社区内容
发帖
与我相关
我的任务
Java
Java相关技术讨论
复制链接
扫一扫
分享
社区描述
Java相关技术讨论
java
spring boot
spring cloud
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章