JAVA布局 简易计算机的java程序
源代码
package test;
import javax.swing.JFrame;
import test.Calculator.ArithmaticListener;
import test.Calculator.CleanBtnActionListener;
import test.Calculator.NumberInputListener;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import java.io.*;
public class Calculator extends JFrame {
//按钮
JButton button,button0,button1,button2,button3,button4;
JButton button5,button6,button7,button8,button9;
JButton buttonAdd,buttonMinus,buttonMul,buttonDivide;
JButton buttonDot,buttonEqual;
JTextField text;//文本框
double num=0;//计算结果
boolean flag=true;//判断
boolean start=true;
String str="=";//运算符号
//JPanel面板
JPanel panel,panel1;
public Calculator (String s,int x,int y,int w,int h){
init(s);
setLocation(x,y);
setSize(w,h);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void init(String s) {
setTitle(s);
setLayout(new FlowLayout());
text = new JTextField(11);
text.setHorizontalAlignment(JTextField.LEFT);
text.setEditable(false);
add(text);
button=new JButton("C");
button.addActionListener(new CleanBtnActionListener());
button7=new JButton("7");
button7.addActionListener(new NumberInputListener());
button8=new JButton("8");
button8.addActionListener(new NumberInputListener());
button9=new JButton("9");
button9.addActionListener(new NumberInputListener());
buttonAdd=new JButton("+");
buttonAdd.addActionListener(new ArithmaticListener());
button4=new JButton("4");
button4.addActionListener(new NumberInputListener());
button5=new JButton("5");
button5.addActionListener(new NumberInputListener());
button6=new JButton("6");
button6.addActionListener(new NumberInputListener());
buttonMinus=new JButton("-");
buttonMinus.addActionListener(new ArithmaticListener());
button1=new JButton("1");
button1.addActionListener(new NumberInputListener());
button2=new JButton("2");
button2.addActionListener(new NumberInputListener());
button3=new JButton("3");
button3.addActionListener(new NumberInputListener());
buttonMul=new JButton("*");
buttonMul.addActionListener(new ArithmaticListener());
button0=new JButton("0");
button0.addActionListener(new NumberInputListener());
buttonDot=new JButton(".");
buttonDot.addActionListener(new NumberInputListener());
buttonDivide=new JButton("/");
buttonDivide.addActionListener(new ArithmaticListener());
buttonEqual=new JButton("=");
buttonEqual.addActionListener(new ArithmaticListener());
panel1=new JPanel();
panel1.setLayout(new GridLayout(1, 2));
panel1.add(button);
add(panel1,BorderLayout.NORTH);
pack();
panel=new JPanel();
panel.setLayout(new GridLayout(4, 4,3,3));//4*4的网格布局
panel.add(button7);
panel.add(button8);
panel.add(button9);
panel.add(buttonAdd);
panel.add(button4);
panel.add(button5);
panel.add(button6);
panel.add(buttonMinus);
panel.add(button1);
panel.add(button2);
panel.add(button3);
panel.add(buttonMul);
panel.add(button0);
panel.add(buttonDot);
panel.add(buttonDivide);
panel.add(buttonEqual);
add(panel,BorderLayout.CENTER);
pack();
}
public class CleanBtnActionListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
text.setText("0.0");
flag=true;
num=0;
str="=";
}
}
public class NumberInputListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
String ans=e.getActionCommand();
if(flag) {
text.setText(ans);
flag=false;
}
else {
text.setText(text.getText()+ans);
}
}
}//
public class ArithmaticListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
flag=true;
String s=e.getActionCommand();
double ans=Double.parseDouble(text.getText());
if(str.equals("+")) {
num=num+ans;
}
else if(str.equals("-")) {
num=num-ans;
}
else if(str.equals("*")) {
num*=ans;
}
else if(str.equals("/")) {
num/=ans;
}
else if(str.equals("=")) {
num=ans;
}
text.setText(""+num);
str=s;
}
}
}
package test;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Calculator ca =new Calculator("计算器",5,5,200,200);
}
}
该代码的四则运算有时候会出bug,后期在修改上传,望大家给出宝贵意见!