社区
Java
帖子详情
怎么用JAVA窗口编写一个计算器
denglisoft
2011-12-18 09:03:25
求指教,怎么用JAVA窗口编写一个简单的计算器(+-*/),球算法及思路,有代码更好 。。。谢谢
...全文
1177
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
Java
编写
一个
计算器
程序.pdf
java
编写
的
一个
计算器
有科学以及基本计算功能的
计算器
,可以进行科学计算,例如求sin、cos等
java
eclipse
编写
的简单
计算器
(界面编程)
java
eclipse
编写
的简单
计算器
(界面编程)
用
java
编写
的科学
计算器
用
java
编写
的科学
计算器
成品附源码 用
java
编写
的科学
计算器
成品附源码 用
java
编写
的科学
计算器
成品附源码
java
编写
的
计算器
java
编写
的
计算器
,值得参考学习,下载后直接运行即可,界面设计不是很好,欢迎修改。
Java
51,402
社区成员
85,918
社区内容
发帖
与我相关
我的任务
Java
Java相关技术讨论
复制链接
扫一扫
分享
社区描述
Java相关技术讨论
java
spring boot
spring cloud
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章