//引入各種類文件
創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比永清網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式永清網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋永清地區(qū)。費用合理售后完善,十多年實體公司更值得信賴。
import?java.awt.Button;
import?java.awt.Color;
import?java.awt.FlowLayout;
import?java.awt.Font;
import?java.awt.Frame;
import?java.awt.GridLayout;
import?java.awt.Panel;
import?java.awt.TextField;
import?java.awt.event.ActionEvent;
import?java.awt.event.ActionListener;
//定義JsqFrame繼承Frame
class?JsqFrame?extends?Frame?{
double?d1,?d2;??//定義兩個double類型的變量
int?op?=?-1;??//定義兩個int類型的變量
static?TextField?tf;//定義靜態(tài)對象TextField
CalPanelL?p1;??//定義CalPanelL對象
//?Constructor構(gòu)造方法
JsqFrame()?{
//以下設(shè)置屬性
super("計算器");
setLayout(new?FlowLayout());
setResizable(false);
setSize(250,?250);
tf?=?new?TextField(18);
tf.setEditable(false);
tf.setBackground(Color.lightGray);
tf.setForeground(Color.red);
tf.setFont(new?Font("Arial",?Font.BOLD,?16));
add(tf);
p1?=?new?CalPanelL();
add(p1);
setVisible(true);
//?addWindowListener(new?Wclose());
}
//添加按鈕繼承Button類
class?CalButton?extends?Button?{
CalButton(String?s)?{
//設(shè)置按鈕屬性
super(s);
setBackground(Color.WHITE);?//設(shè)置顏色為白色
}
}
//定義顯示器繼承Panel類
class?CalPanelL?extends?Panel?{
CalButton?a,?c,?b0,?b1,?b2,?b3,?b4,?b5,?b6,?b7,?b8,?b9,?bPN,?bPoint,
bAdd,?bSub,?bMul,?bDiv,?bL,?bR,?bLn,?bEqual,?bCE,?bQuit;
CalPanelL()?{
//設(shè)置顯示器的屬性
setLayout(new?GridLayout(6,?4));
setFont(new?Font("TimesRoman",?Font.BOLD,?16));
a?=?new?CalButton("");
c?=?new?CalButton("");
b0?=?new?CalButton("0");
b1?=?new?CalButton("1");
b2?=?new?CalButton("2");
b3?=?new?CalButton("3");
b4?=?new?CalButton("4");
b5?=?new?CalButton("5");
b6?=?new?CalButton("6");
b7?=?new?CalButton("7");
b8?=?new?CalButton("8");
b9?=?new?CalButton("9");
bPN?=?new?CalButton("+/-");
bPoint?=?new?CalButton(".");
//?設(shè)置按鈕
bAdd?=?new?CalButton("+");
bSub?=?new?CalButton("-");
bMul?=?new?CalButton("*");
bDiv?=?new?CalButton("/");
bL?=?new?CalButton("(");
bR?=?new?CalButton(")");
bLn?=?new?CalButton("ln");
bEqual?=?new?CalButton("=");
bCE?=?new?CalButton("CE");
bQuit?=?new?CalButton("退出");
//?加入按鈕
add(a);
add(c);
add(bCE);
bCE.addActionListener(new?PressBCE());
add(bQuit);
bQuit.addActionListener(new?PressBQuit());
add(b7);
b7.addActionListener(new?PressB7());
add(b8);
b8.addActionListener(new?PressB8());
add(b9);
b9.addActionListener(new?PressB9());
add(bDiv);
bDiv.addActionListener(new?PressBDiv());
add(b4);
b4.addActionListener(new?PressB4());
add(b5);
b5.addActionListener(new?PressB5());
add(b6);
b6.addActionListener(new?PressB6());
add(bMul);
bMul.addActionListener(new?PressBMul());
add(b1);
b1.addActionListener(new?PressB1());
add(b2);
b2.addActionListener(new?PressB2());
add(b3);
b3.addActionListener(new?PressB3());
add(bSub);
bSub.addActionListener(new?PressBSub());
add(b0);
b0.addActionListener(new?PressB0());
add(bPoint);
bPoint.addActionListener(new?PressBPoint());
add(bPN);
bPN.addActionListener(new?PressBPN());
;
add(bAdd);
bAdd.addActionListener(new?PressBAdd());
add(bL);
bL.addActionListener(new?PressBL());
add(bR);
bR.addActionListener(new?PressBR());
add(bLn);
bLn.addActionListener(new?PressBLn());
add(bEqual);
bEqual.addActionListener(new?PressBEqual());
}
}
//定義PressBAdd實現(xiàn)ActionListener
//大體的意思是按計算機按鍵的時出發(fā)的時間,設(shè)置按鍵的監(jiān)聽[加號的監(jiān)聽事件]
class?PressBAdd?implements?ActionListener?{
public?void?actionPerformed(ActionEvent?e)?{
try?{
String?d1?=?tf.getText();
op?=?0;
tf.setText(d1?+?"+");
}?catch?(Exception?ee)?{
}
}
}
//定義PressBSub實現(xiàn)ActionListener
//大體的意思是按計算機按鍵的時出發(fā)的時間,設(shè)置按鍵的監(jiān)聽[減號的監(jiān)聽事件]
class?PressBSub?implements?ActionListener?{
public?void?actionPerformed(ActionEvent?e)?{
try?{
String?d1?=?tf.getText();
op?=?1;
tf.setText(d1?+?"-");
}?catch?(Exception?ee)?{
}
}
}
//定義PressBMul實現(xiàn)ActionListener
//大體的意思是按計算機按鍵的時出發(fā)的時間,設(shè)置按鍵的監(jiān)聽[乘號的監(jiān)聽事件]
class?PressBMul?implements?ActionListener?{
public?void?actionPerformed(ActionEvent?e)?{
try?{
String?d1?=?tf.getText();
op?=?2;
tf.setText(d1?+?"*");
}?catch?(Exception?ee)?{
}
}
}
//定義PressBDiv實現(xiàn)ActionListener
//大體的意思是按計算機按鍵的時出發(fā)的時間,設(shè)置按鍵的監(jiān)聽[除號的監(jiān)聽事件]
class?PressBDiv?implements?ActionListener?{
public?void?actionPerformed(ActionEvent?e)?{
try?{
String?d1?=?tf.getText();
op?=?3;
tf.setText(d1?+?"/");
}?catch?(Exception?ee)?{
}
}
}
//定義PressBL實現(xiàn)ActionListener
//大體的意思是按計算機按鍵的時出發(fā)的時間,設(shè)置按鍵的監(jiān)聽[向左鍵的監(jiān)聽事件]
class?PressBL?implements?ActionListener?{
public?void?actionPerformed(ActionEvent?e)?{
try?{
String?d1?=?tf.getText();
op?=?3;
tf.setText(d1?+?"(");
}?catch?(Exception?ee)?{
}
}
}
//定義PressBR實現(xiàn)ActionListener
//大體的意思是按計算機按鍵的時出發(fā)的時間,設(shè)置按鍵的監(jiān)聽[向右鍵的監(jiān)聽事件]
class?PressBR?implements?ActionListener?{
public?void?actionPerformed(ActionEvent?e)?{
try?{
String?d1?=?tf.getText();
op?=?3;
tf.setText(d1?+?")");
}?catch?(Exception?ee)?{
}
}
}
//定義PressBEqual實現(xiàn)ActionListener
//大體的意思是按計算機按鍵的時出發(fā)的時間,設(shè)置按鍵的監(jiān)聽[等號的監(jiān)聽事件]
class?PressBEqual?implements?ActionListener?{
public?void?actionPerformed(ActionEvent?e)?{
try?{
Jsq?jsq?=?new?Jsq();
String?s?=?tf.getText();
System.out.println(s);
while?(s.indexOf("(")?+?1??0??s.indexOf(")")??0)?{
String?s1?=?jsq.caculateHigh(s);
System.out.println(s1);
s?=?s1;
}
String?str?=?jsq.cacluteMain(s);
System.out.println(str);
tf.setText(String.valueOf(str));
}?catch?(Exception?ee)?{
}
}
}
/*
*?批量寫吧
*?以下是按1、2、3等等的監(jiān)聽事件
*?還有清零的等等監(jiān)聽事件
*/
class?PressBLn?implements?ActionListener?{
public?void?actionPerformed(ActionEvent?e)?{
try?{
double?x?=?Double.parseDouble(tf.getText());
double?y;
y?=?Math.log10(x);
tf.setText(y?+?"");
}?catch?(Exception?ee)?{
}
}
}
class?PressBCE?implements?ActionListener?{
public?void?actionPerformed(ActionEvent?e)?{
tf.setText("");
}
}
class?PressBPN?implements?ActionListener?{
public?void?actionPerformed(ActionEvent?e)?{
try?{
String?text?=?tf.getText();
if?(text?!=?"")?{
if?(text.charAt(0)?==?'-')
tf.setText(text.substring(1));
else?if?(text.charAt(0)?=?'0'??text.charAt(0)?=?'9')
tf.setText("-"?+?text.substring(0));
else?if?(text.charAt(0)?==?'.')
tf.setText("-0"?+?text.substring(0));
}
}?catch?(Exception?ee)?{
}
}
}
class?PressBPoint?implements?ActionListener?{
public?void?actionPerformed(ActionEvent?e)?{
String?text?=?tf.getText();
if?(text.lastIndexOf(".")?==?-1)
tf.setText(text?+?".");
}
}
class?PressB0?implements?ActionListener?{
public?void?actionPerformed(ActionEvent?e)?{
String?text?=?tf.getText();
tf.setText(text?+?"0");
}
}
class?PressB1?implements?ActionListener?{
public?void?actionPerformed(ActionEvent?e)?{
String?text?=?tf.getText();
tf.setText(text?+?"1");
}
}
class?PressB2?implements?ActionListener?{
public?void?actionPerformed(ActionEvent?e)?{
String?text?=?tf.getText();
tf.setText(text?+?"2");
}
}
class?PressB3?implements?ActionListener?{
public?void?actionPerformed(ActionEvent?e)?{
String?text?=?tf.getText();
tf.setText(text?+?"3");
}
}
class?PressB4?implements?ActionListener?{
public?void?actionPerformed(ActionEvent?e)?{
String?text?=?tf.getText();
tf.setText(text?+?"4");
}
}
class?PressB5?implements?ActionListener?{
public?void?actionPerformed(ActionEvent?e)?{
String?text?=?tf.getText();
tf.setText(text?+?"5");
}
}
class?PressB6?implements?ActionListener?{
public?void?actionPerformed(ActionEvent?e)?{
String?text?=?tf.getText();
tf.setText(text?+?"6");
}
}
class?PressB7?implements?ActionListener?{
public?void?actionPerformed(ActionEvent?e)?{
String?text?=?tf.getText();
tf.setText(text?+?"7");
}
}
class?PressB8?implements?ActionListener?{
public?void?actionPerformed(ActionEvent?e)?{
String?text?=?tf.getText();
tf.setText(text?+?"8");
}
}
class?PressB9?implements?ActionListener?{
public?void?actionPerformed(ActionEvent?e)?{
String?text?=?tf.getText();
tf.setText(text?+?"9");
}
}
class?PressBQuit?implements?ActionListener?{
public?void?actionPerformed(ActionEvent?e)?{
System.exit(0);
}
}
public?void?Js()?{
String?text?=?tf.getText();
tf.setText(text);
}
}
import java.awt.*;//引入包java.awt中所有的類
import java.awt.event.*;//引入包java.awt.event中所有的類.
public class Calculator extends WindowAdapter implements ActionListener//創(chuàng)建Calculator類,
實現(xiàn)ActionListener接口.
{
private double result=0,data1=0,radixPointDepth=1;//定義變量
private boolean radixPointIndicate=false,resultIndicate=false;
private char prec='+';//創(chuàng)建優(yōu)先默認字符"+"
private Frame f;//創(chuàng)建窗口
private TextField tf;//創(chuàng)建文本框
private Button b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17;//創(chuàng)建按鈕
private Panel p;//創(chuàng)建/面板容器
static public void main(String args[])//main方法,創(chuàng)建calGUI(圖形用戶界面),完成初試化
{
//構(gòu)造器
Calculator de=new Calculator();//創(chuàng)建構(gòu)造方法
de.go();
}
public void go()
{
f=new Frame("計算器");
p=new Panel();//運算界面p
p.setLayout(new GridLayout(4,4)); // 設(shè)置p的布局為GridLayout,四行四列
tf=new TextField(30);
//實例化按鈕
b1=new Button("7");
b2=new Button("8");
b3=new Button("9");
b4=new Button("+");
b5=new Button("4");
b6=new Button("5");
b7=new Button("6");
b8=new Button("-");
b9=new Button("1");
b10=new Button("2");
b11=new Button("3");
b12=new Button("*");
b13=new Button("0");
b14=new Button(".");
b15=new Button("=");
b16=new Button("/");
b17=new Button("清零");
f.add(tf,"North"); //把文本區(qū)域添加到框架的上方
f.add(p,"Center"); //把面版添加到框架的中間
f.add(b17,"South"); //把按鈕(清零)添加到框架的下方
//把按鈕添加到面版上
p.add(b1);
p.add(b2);
p.add(b3);
p.add(b4);
p.add(b5);
p.add(b6);
p.add(b7);
p.add(b8);
p.add(b9);
p.add(b10);
p.add(b11);
p.add(b12);
p.add(b13);
p.add(b14);
p.add(b15);
p.add(b16);
//為按鈕添加監(jiān)聽
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
b5.addActionListener(this);
b6.addActionListener(this);
b7.addActionListener(this);
b8.addActionListener(this);
b9.addActionListener(this);
b10.addActionListener(this);
b11.addActionListener(this);
b12.addActionListener(this);
b13.addActionListener(this);
b14.addActionListener(this);
b15.addActionListener(this);
b16.addActionListener(this);
b17.addActionListener(this);
f.addWindowListener(this); //為框架添加監(jiān)聽
f.setSize(300,190);//設(shè)置框架的大小
f.setVisible(true);//設(shè)置框架為可見
}
//監(jiān)聽程序
public void actionPerformed(ActionEvent e)
{
String s;
s=e.getActionCommand();
//SWITCH開關(guān)
switch(s.charAt(0))
{
case '0': case '1': case '2': case '3': case '4': case '5': case '6': case
'7': case '8': case '9'://按了“0-9”,就執(zhí)行下面
if(resultIndicate)
{
result=0;
data1=0;
prec='+';
}
Integer Int1=new Integer(s);
if(radixPointIndicate)
{
radixPointDepth=radixPointDepth/10;
data1=data1+(Int1.intValue())*radixPointDepth;
}
else
{
data1=data1*10+(Int1.intValue());
}
Double displayNumber=new Double(data1);
tf.setText(displayNumber.toString());
resultIndicate=false;
break;
case '+': case '-':case '*':case '/':case '='://按了“+、-、*、/”,就
執(zhí)行下面
if(s.charAt(0)!='='resultIndicate)
{
prec=s.charAt(0);
resultIndicate=false;
}
else
{
//用SWITCH開關(guān)運算出執(zhí)行了“+、-、*、/”的結(jié)果
switch(prec)
{
case '+':
result=result+data1;
break;
case '-':
result=result-data1;
break;
case '*':
result=result*data1;
break;
case '/':
result=result/data1;
break;
}
}
radixPointIndicate=false;
radixPointDepth=1;
displayNumber=new Double(result);
tf.setText(displayNumber.toString());
//監(jiān)聽是否按了“=”
if(s.charAt(0)!='=')
{
data1=0;
prec=s.charAt(0);
}
else
{
resultIndicate=true;
}
break;
case '.':
radixPointIndicate=true;
break;
}
//監(jiān)聽是否按了為“清零”,是則對各數(shù)據(jù)清零
if(s.equals("清零"))
{
result=0;
data1=0;
radixPointDepth=1;
tf.setText("");
}
}
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
我給你找找
package com.bj.calcultor;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Calcultor extends Frame implements ActionListener {
public static void main(String[] args) {//定義主方
new Calcultor();//創(chuàng)建匿名對象,并調(diào)用test()方法;
}
//定義按鈕名稱
String[] arr={"1","2","3","4","5","6","7","8","9","0","+","-","*","/","=","."};
JButton [] button=new JButton[arr.length];
JButton reset = new JButton("CE");
JTextField display = new JTextField(20);
//創(chuàng)建窗口,定義組件
//執(zhí)行窗口事件:關(guān)閉窗口
private class WindowCloser extends WindowAdapter {
public void windowClosing(WindowEvent we) {
System.exit(0);
}
}
public Calcultor(){
super("計算器");//定義標題
//定義面板容器,并布局
JPanel jpanel=new JPanel(new GridLayout(4,4));
//添加按鈕,并給按鈕添加名稱
for (int i = 0; i arr.length; i++) {
button[i]= new JButton(arr[i]);
jpanel.add(button[i]);
}
JPanel panel2 = new JPanel();
panel2.add("Northr", display);
display.setEnabled(false);
panel2.add("East", reset);
this.add("North", panel2);
this.add("Center", jpanel);
for (int i = 0; i arr.length; i++){
addWindowListener(new WindowCloser());
setVisible(true);
setSize(400,400);
pack();
button[i].addActionListener(this);
reset.addActionListener(this);
display.addActionListener(this);
}
}
@Override
public void actionPerformed(ActionEvent e) {//定義事件
// TODO Auto-generated method stub
Object target=e.getSource();
String lable=e.getActionCommand();
if(target==reset){
handleReset();
}else if("0123456789.".indexOf(lable)0){
handleNumber(lable);
}else{
hadleOperator(lable);
}
}
boolean isFirstDigit=true;
private void hadleOperator(String key) {
if(operator.equals("+")){
number += Double.valueOf(display.getText());
}else if (operator.equals("-")){
number -= Double.valueOf(display.getText());
}else if (operator.equals("*")){
number *= Double.valueOf(display.getText());
}else if (operator.equals("/")){
number /= Double.valueOf(display.getText());
}else if(operator.equals("=")){
number =Double.valueOf(display.getText());
}
display.setText(String.valueOf(number));
operator=key;
isFirstDigit=true;
}
private void handleNumber(String key) {
if(true){
display.setText(key);//把鍵值設(shè)置為文本框內(nèi)容
}else if(key.equals(".") display.getText().indexOf(".")0){
display.setText(display.getText()+".");//把文本框內(nèi)容設(shè)置:display.getText()+"."
}else if(!key.equals(".")){
display.setText(display.getText() + key);//把文本框內(nèi)容設(shè)置:display.getText()+key
isFirstDigit=false;
}
}
private void handleReset() {
display.setText("0");
isFirstDigit=true;
operator="=";
}
String operator="=";
Double number=0.0;
}
其實你這種學(xué)習(xí)編程的方法我是極度不推薦的,正確的方法應(yīng)該從基礎(chǔ)開始,你這個程序是用圖形用戶界面來寫的,入門的話最好還是控制臺程序,這樣你可以了解整個程序的流程和語法,如果你沒有C語言的基礎(chǔ),請找一本講解C語言的書學(xué)習(xí),然后學(xué)習(xí)好了你再來看JAVA感覺就很簡單了。(絕對原創(chuàng),請求給分)
import java.awt.*;
import java.awt.event.*; //導(dǎo)入包,因為后面要用到里面的東西
public class jisuanqi extends WindowAdapter {
Panel p1 = new Panel();
Panel p2 = new Panel();
Panel p3 = new Panel(); //構(gòu)造3個panel對象,這個是個容器,里面可以添加別的組件
TextField txt; // TextField 組件,相當于一個文本區(qū)域
private Button[] b = new Button[17]; //看名字就知道是按鈕了吧
private String ss[] = { "7", "8", "9", "+", "4", "5", "6", "-", "1", "2",
"3", "*", "清空", "0", "=", "/", "關(guān)閉" };
static int a;
static String s, str;
//入口函數(shù),相當于C里面的MAIN函數(shù)
public static void main(String args[]) {
(new jisuanqi()).frame(); //調(diào)用函數(shù),java里叫方法
}
//將窗口實例化,frame是一個窗口,awt包里的。算法方面自己看看就能明白
public void frame() {
Frame fm = new Frame("簡單計算器");
for (int i = 0; i = 16; i++) {
b[i] = new Button(ss[i]);
}
for (int i = 0; i = 15; i++) {
p2.add(b[i]);
}
fm.setBounds(300,200,200,200);
b[16].setBackground(Color.yellow);
txt = new TextField(15);
txt.setEditable(false);
for (int i = 0; i = 16; i++) {
b[i].addActionListener(new buttonlistener());
}
b[16].addActionListener(new close());
fm.addWindowListener(this);
fm.setBackground(Color.red);
p1.setLayout(new BorderLayout());
p1.add(txt, "Center");
p2.setLayout(new GridLayout(4, 4));
p3.setLayout(new BorderLayout());
p3.add(b[16]);
fm.add(p1, "North");
fm.add(p2, "Center");
fm.add(p3, "South");
fm.pack();
fm.setVisible(true);
}
//關(guān)閉窗口的方法
public void windowClosing(WindowEvent e) {
System.exit(0);
}
//用這種方法在一個類里面定義另一個類是不好的,應(yīng)該單獨用以個文件承載,這個類是實現(xiàn)了ActionListener接口,用于監(jiān)聽按鈕事件。正規(guī)的寫法應(yīng)該是在主類里面實現(xiàn)這個接口,然后寫一個方法來調(diào)用。
class buttonlistener implements ActionListener {
public void actionPerformed(ActionEvent e) {
Button btn = (Button) e.getSource();
if (btn.getLabel() == "=") {
jisuan();
str = String.valueOf(a);
txt.setText(str);
s = "";
} else if (btn.getLabel() == "+") {
jisuan();
txt.setText("");
s = "+";
} else if (btn.getLabel() == "-") {
jisuan();
txt.setText("");
s = "-";
} else if (btn.getLabel() == "/") {
jisuan();
txt.setText("");
s = "/";
} else if (btn.getLabel() == "*") {
jisuan();
txt.setText("");
s = "*";
} else {
txt.setText(txt.getText() + btn.getLabel());
if (btn.getLabel() == "清空")
txt.setText("");
}
}
public void jisuan() {
if (s == "+")
a += Integer.parseInt(txt.getText());
else if (s == "-")
a -= Integer.parseInt(txt.getText());
else if (s == "*")
a *= Integer.parseInt(txt.getText());
else if (s == "/")
a /= Integer.parseInt(txt.getText());
else
a = Integer.parseInt(txt.getText());
}
}
}
//關(guān)閉按鈕事件
class close implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
}