具体代码如下:
import javax.swing.*
import java.awt.event.*
import java.awt.*
public class Calculator extends JFrame implements ActionListener {
private JFrame jf
private JButton[] allButtons
private JButton clearButton
private JTextField jtf
public Calculator() {
//对图形组件实例化
jf=new JFrame("任静的计算器1.0:JAVA版")
jf.addWindowListener(new WindowAdapter(){
public void windowClosing(){
System.exit(0)
}
})
allButtons=new JButton[16]
clearButton=new JButton("清除")
jtf=new JTextField(25)
jtf.setEditable(false)
String str="123+456-789*0.=/"
for(int i=0i<allButtons.lengthi++){
allButtons[i]=new JButton(str.substring(i,i+1))
}
}
public void init(){
//完成布局
jf.setLayout(new BorderLayout())
JPanel northPanel=new JPanel()
JPanel centerPanel=new JPanel()
JPanel southPanel=new JPanel()
northPanel.setLayout(new FlowLayout())
centerPanel.setLayout(new GridLayout(4,4))
southPanel.setLayout(new FlowLayout())
northPanel.add(jtf)
for(int i=0i<16i++){
centerPanel.add(allButtons[i])
}
southPanel.add(clearButton)
jf.add(northPanel,BorderLayout.NORTH)
jf.add(centerPanel,BorderLayout.CENTER)
jf.add(southPanel,BorderLayout.SOUTH)
addEventHandler()
}
//添加事件监听
public void addEventHandler(){
jtf.addActionListener(this)
for(int i=0i<allButtons.lengthi++){
allButtons[i].addActionListener(this)
}
clearButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
Calculator.this.jtf.setText("")
}
})
}
//事件处理
public void actionPerformed(ActionEvent e) {
//在这里完成事件处理 使计算器可以运行
String action=e.getActionCommand()
if(action=="+"||action=="-"||action=="*"||action=="/"){
}
}
public void setFontAndColor(){
Font f=new Font("宋体",Font.BOLD,24)
jtf.setFont(f)
jtf.setBackground(new Color(0x8f,0xa0,0xfb))
for(int i=0i<16i++){
allButtons[i].setFont(f)
allButtons[i].setForeground(Color.RED)
}
}
public void showMe(){
init()
setFontAndColor()
jf.pack()
jf.setVisible(true)
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
}
public static void main(String[] args){
new Calculator().showMe()
}
}
package counterimport java.awt.*
import java.awt.event.*
import javax.swing.*
public class Counter implements ActionListener {
JFrame counter = null
Container cou = null
JTextField txt = null
JPanel pan = null
JButton [] btn = null
JLabel lblbrand = null,lbltype = null
String sign = "",sign1 = "0",sign2 = "",sign3 = ""
char operator = ' ', operator1 = '+'
int i = 0
double resault = 0
int b = 0
public Counter() {
counter = new JFrame("计算器")
cou = counter.getContentPane()
cou.setLayout(null)
lblbrand = new JLabel("大象牌")
lblbrand.setForeground(Color.BLUE)
lblbrand.setBounds(15,8,70,20)
cou.add(lblbrand)
lbltype = new JLabel("x-14250")
lbltype.setForeground(Color.GREEN)
lbltype.setBounds(265,8,70,20)
cou.add(lbltype)
txt = new JTextField("0.")
txt.setCaretPosition(2)
txt.setHorizontalAlignment(JTextField.TRAILING)
cou.add(txt)
txt.setBounds(15,28,300,30)
pan = new JPanel(new GridLayout(5,4,10,10))
pan.setBounds(15,68,300,160)
btn = new JButton[20]
String [] btnname = {"Off","Back","C","Exit","7","8","9","+","4","5",
"6","-","1","2","3","*","0",".","=","/"}
for(int i = 0i <20i++)
{
btn[i] = new JButton(btnname[i])
pan.add(btn[i])
btn[i].addActionListener(this)
}
btn[7].setFont(new java.awt.Font("宋体", Font.PLAIN, 16))
btn[11].setFont(new java.awt.Font("宋体", Font.PLAIN, 16))
btn[15].setFont(new java.awt.Font("宋体", Font.PLAIN, 16))
btn[17].setFont(new java.awt.Font("宋体", Font.PLAIN, 16))
btn[18].setFont(new java.awt.Font("宋体", Font.PLAIN, 16))
btn[19].setFont(new java.awt.Font("宋体", Font.PLAIN, 16))
cou.add(pan)
counter.setSize(335,280)
counter.setVisible(true)
}
public void actionPerformed(ActionEvent e) {
operator = e.getActionCommand().charAt(0)
annal()
if(!sign.equals(""))
opinion(sign)
else
showresault(sign1)
if(i % 2 != 0)
txt.setText("")
}
private void annal(){
int l = 0
switch (operator) {
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
if (!sign.equals("0"))
sign = sign + Character.toString(operator)
else
sign = sign.concat(Character.toString(operator)).substring(1)
break
case '0':
if (!sign.equals("") &&!sign.equals("0"))
sign = sign + Character.toString(operator)
else
sign = "0"
break
case 'B':
if (sign.length() >1 &&sign.charAt(txt.getText().length() - 1) != '.') {
sign = (sign.substring(0,sign.length() - 1))
} else if (sign.length() >2) {
sign = (sign.substring(0,sign.length() - 2))
} else {
sign = "0"
}
break
case 'C':
sign = ""
sign2 = ""
sign1 = "0"
operator = ' '
break
case 'E':
System.exit(0)
break
case 'O':
sign = ""
sign2 = ""
sign1 = "0"
operator = ' '
i++
break
case '+':
case '-':
case '*':
case '/':
count()
break
case '=':
count()
operator1 = ' '
sign3 = "-1"
break
case '.':
if (sign.equals("")) {
sign = "0".concat(Character.toString(operator))
} else {
for (int i = 0i <sign.length()i++) {
if (sign.charAt(i) == '.') {
l++
}
}
if (l == 0) {
sign = sign + Character.toString(operator)
}
}
break
}
}
private void count(){
double number1 = 0,number2 = 0
if (!sign.equals(""))
sign2 = sign
else
sign2 = "0"
sign = ""
if (!sign3.equals("-1"))
sign3 = sign1
else
sign3 = "0"
number1 = Double.valueOf(sign3).doubleValue()
number2 = Double.valueOf(sign2).doubleValue()
switch(operator1){
case '+':
resault = number1 + number2
break
case '-':
resault = number1 - number2
break
case '*':
resault = number1 * number2
break
case '/':
resault = number1 / number2
break
case ' ':
resault = Double.valueOf(sign2).doubleValue()
}
operator1 = operator
sign1 = Double.toString(resault)
}
private void showresault(String sign) {
int j = sign.length() - 1
String subsign = ""
for (int i = 0i <= ji++) {
if (sign.charAt(i) == '.')
{
j = i
break
}
}
if (j != sign.length() - 1) {
subsign = sign.substring(j+1)
if (Double.valueOf(subsign).doubleValue() >0)
txt.setText(sign)
else
txt.setText(sign.substring(0, j))
}
else
txt.setText(sign)
}
private void opinion(String sign){
txt.setText(sign)
}
public static void main(String[] args) {
Counter counter = new Counter()
}
}
这个是以前自己做的一个计算器,可能不是很完善,注释没写,但代码相对简单,应该可以看明白
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)