java编写程序:创建一个 计算器 的 界面,包含 0-9 个 数字 , A-F个字母,采用 GridLayout布局

Python07

java编写程序:创建一个 计算器 的 界面,包含 0-9 个 数字 , A-F个字母,采用 GridLayout布局,第1张

import java.awt.*

import javax.swing.*

public class MyCalculator extends JFrame{

public MyCalculator() {

String ss1 = "0123456789ABCDEF"

String[] ss2 = {"+","-","*","/","√ ̄","aⁿ","CE","="}//有些字符不在GBK中,所以文本使用了UTF-8编码。如果要用GBK编码,就把字符修改成汉字,比如平方根,乘方

JPanel jp0//存放显示的文本框

JPanel jp1//存放0~9 A~F

JPanel jp2//存放运算符

//jp0

jp0 = new JPanel()

JTextField jtf = new JTextField(16)

jtf.setText("0")

jtf.setHorizontalAlignment(JTextField.RIGHT)//按照惯例,计算器的数字显示在右侧

jtf.setEditable(false)//按照惯例,计算器显示结果的文本框不许编辑

jp0.add(jtf)

JButton jb//按钮

//jp1

jp1 = new JPanel(new GridLayout(4, 4,3,3))

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

jb = new JButton(ss1.charAt(i)+"")

jp1.add(jb)

}

//jp2

jp2 = new JPanel(new GridLayout(3, 3,3,3))

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

jb = new JButton(ss2[i])

jb.setForeground(Color.BLUE)//为了突出这些运算符,把颜色调整成蓝色

jp2.add(jb)

}

add(jp0)

add(jp1)

add(jp2)

setLayout(new FlowLayout())//把JFrame设置成流式布局

setTitle("计算器")//设置窗口标题

setSize(220, 285)//设置窗口大小

setResizable(false)//设置窗口不许缩放,因为流式布局,缩放会导致布局变化

setLocationRelativeTo(null)//设置窗口居中

setDefaultCloseOperation(EXIT_ON_CLOSE)//设置点击关闭退出jvm虚拟机

setVisible(true)//设置窗口可见

}

public static void main(String[] args) {

new MyCalculator()//创建窗口

}

}

package jisuanqi_new

import java.awt.*

import java.awt.event.*

public class JiSuanQi_new implements ActionListener

{

Panel p1//声明面板p1

TextField t1//声明文本行t1

String[] label = {"7","8","9","/","4","5","6","*","1","2","3","-","0",".","=","+"}//声明标签数组label1存放按钮上的标签

Button[] b//声明按钮数组存放16个按钮

private int i//声明i以备后用

private String op1 = "0"//运算数备用

private String operator = "+"//运算符备用

private boolean append = false//备用

public JiSuanQi_new()//构造方法

{

t1=new TextField()//初始化文本行t1

b = new Button[label.length]//初始化按钮数组b

p1=new Panel()//初始化面板p1

p1.setLayout(new GridLayout(4,4,4,4))//使面板选择网格布局管理器以备储存16个按钮(4行4列)

for(int i=0i<b.lengthi++)//利用for循环把标签放在按钮上,使每个按钮添加事件监听器,在面板p1上添加上16个按钮

{

b[i] = new Button(label[i])//把标签依次放在16个按钮上

b[i].addActionListener(this)//使每个按钮添加动作事件监听器

p1.add(b[i]) //分别将按钮添加到面板p1上

}

Frame f=new Frame("计算器1.0")//初始化窗口f,起名字计算器1.0

f.setLayout(new BorderLayout())//为窗口选择边界布局管理器

f.add(BorderLayout.NORTH,t1)//把文本行他添加到窗口的北部

f.add(BorderLayout.CENTER,p1)//把面吧p1添加到窗口的中间

f.addWindowListener(new WindowAdapter(){//给窗口f添加窗口事件监听器

public void windowClosing(WindowEvent eve){//运行窗口关闭方法

System.exit(0)//退出程序

}

})

f.setSize(250, 250)//设置窗口大小

f.setLocation(200,200)

f.setVisible(true)//显示窗口

}

public static void main(String args[])

{

new JiSuanQi_new() //调用构造方法

}

public void actionPerformed(ActionEvent ae)

{//按钮被操作发生

String comm = ae.getActionCommand()//返回与此动作相关的命令字符串,即:使用者第一次点击的按钮是什么。

if("0123456789".indexOf(comm)!=-1)//如果相关命令字符串为0~9之间的数字则执行

{

if(append){

String temp = t1.getText()//新数字

t1.setText(temp+comm)

}else{                         //因为此时append为false执行这个

t1.setText(comm) //将文本行t1设置为相关命令字符串(你按中的按钮代码)

append =  true//此时append=true若继续按按钮若继续按数字的话1.第一次的按话不会改变2.非第一次按得话会覆盖之前按得数字(即缺点:只能进行单个数字的计算)

}

}

else if(("+-*/".indexOf(comm)!=-1))//如果相关命令字符串为+-*/之间的数字则执行

{

//保存

//t1.setText(comm)

op1 = t1.getText()//把第一个数赋值给op1

operator = comm//把命令字符串赋值给operator

append = false//此时append为false即若继续按按钮若按数字的话将重复上面的动作,按符号的话将覆盖之前的符号

}

else if("=".equals(comm))//如果按的是=号,则按条件进行下面的运算

{

String op2 = t1.getText()//op2第二个数

double d1 = Double.parseDouble(op1)

double d2 = Double.parseDouble(op2)

if(operator.equals("+")){

d1 = d1 + d2 

}else if(operator.equals("-")){

d1 = d1 - d2

}else if(operator.equals("*")){

d1 = d1 * d2

}else {

d1 = d1 / d2

}

t1.setText(d1+"")//显示计算结果

append = false

}

else if(".".equals(comm))//若是.号继续按

{

String temp = t1.getText()

if(temp.indexOf(".")==-1){

t1.setText(temp+".")

append = true

}

}

}

}

 1、新建一个易语言的Windows窗口程序。

2、举一个简单的例子,做一个加法计算器。添加三个编辑框、两个文本和一个按钮,界面如下:

3、此时会用到两个局部变量,定义为变量1、变量2,按CTRL+L弹出局部变量表(或点菜单栏上的插入,选择局部变量),如图。

4、点击变量名下面的框,输入变量1,点击类型,按下空格键,弹出如下菜单:

选择小数型。同样,添加变量2。

5、同样,全局变量也一样,只不过快捷键为CTRL+G,注意的是,要在窗口程序集里面插入变量。