Ⅰ 用java編寫計算器界面

分析
邊界布局和
表格布局嵌套使用
詳細代碼和注釋
附件下載

Ⅱ java編寫計算器界面

以前我自己的實驗作業

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class Jsq extends JFrame
{
JMenu menu1=new JMenu("編輯(E)");
JMenu menu2=new JMenu("查看(V)");
JMenu menu3=new JMenu("幫助(H)");
JMenuBar bar=new JMenuBar();

JTextField text=new JTextField("0.",20);

JRadioButton c1=new JRadioButton("十六進制",false);
JRadioButton c2=new JRadioButton("十進制",true);
JRadioButton c3=new JRadioButton("八進制",false);
JRadioButton c4=new JRadioButton("二進制",false);

JRadioButton d1=new JRadioButton("角度",true);
JRadioButton d2=new JRadioButton("弧度",false);
JRadioButton d3=new JRadioButton("梯度",false);

JCheckBox e1=new JCheckBox("Inv");
JCheckBox e2=new JCheckBox("Hyp");
JTextField lb1=new JTextField(3);
JTextField lb2=new JTextField(3);

JButton a1=new JButton("Backspace");
JButton a2=new JButton(" CE ");
JButton a3=new JButton(" C ");
JButton a4=new JButton("Sta");
JButton a5=new JButton("Ave");
JButton a6=new JButton("Sum");
JButton a7=new JButton("S");
JButton a8=new JButton("Dat");
JButton a9=new JButton("F-E");
JButton a10=new JButton("dms");
JButton a11=new JButton("sin");
JButton a12=new JButton("cos");
JButton a13=new JButton("tan");
JButton a14=new JButton("(");
JButton a15=new JButton("Exp");
JButton a16=new JButton("x^y");
JButton a17=new JButton("x^3");
JButton a18=new JButton("x^2");
JButton a19=new JButton(")");
JButton a20=new JButton("In");
JButton a21=new JButton("log");
JButton a22=new JButton("n!");
JButton a23=new JButton("1/x");
JButton a24=new JButton("MC");
JButton a25=new JButton("MR");
JButton a26=new JButton("MS");
JButton a27=new JButton("M+");
JButton a28=new JButton("pi");
JButton a29=new JButton("7");
JButton a30=new JButton("4");
JButton a31=new JButton("1");
JButton a32=new JButton("0");
JButton a33=new JButton("A");
JButton a34=new JButton("8");
JButton a35=new JButton("5");
JButton a36=new JButton("2");
JButton a37=new JButton("+/-");
JButton a38=new JButton("B");
JButton a39=new JButton("9");
JButton a40=new JButton("6");
JButton a41=new JButton("3");
JButton a42=new JButton(".");
JButton a43=new JButton("C");
JButton a44=new JButton("/");
JButton a45=new JButton("*");
JButton a46=new JButton("-");
JButton a47=new JButton("+");
JButton a48=new JButton("D");
JButton a49=new JButton("Mod");
JButton a50=new JButton("Or");
JButton a51=new JButton("Lsh");
JButton a52=new JButton("=");
JButton a53=new JButton("E");
JButton a54=new JButton("And");
JButton a55=new JButton("Xor");
JButton a56=new JButton("Not");
JButton a57=new JButton("Int");
JButton a58=new JButton("F");

Jsq()
{
super("計算器");
setSize(900,360);
setVisible(true);
Container con=getContentPane();

JPanel panel1=new JPanel();//菜單欄和文本
panel1.setLayout(new GridLayout(2,1));
bar.add(menu1);
bar.add(menu2);
bar.add(menu3);
panel1.add(bar);
panel1.add(text);

JPanel panel2=new JPanel();//單選框
panel2.setLayout(new GridLayout(1,2));
ButtonGroup cbg1=new ButtonGroup();
cbg1.add(c1);
cbg1.add(c2);
cbg1.add(c3);
cbg1.add(c4);
JPanel jp1=new JPanel();
jp1.setLayout(new FlowLayout());
jp1.add(c1);jp1.add(c2);jp1.add(c3);jp1.add(c4);
ButtonGroup cbg2=new ButtonGroup();
cbg2.add(d1);
cbg2.add(d2);
cbg2.add(d3);
JPanel jp2=new JPanel();
jp2.setLayout(new FlowLayout());
jp2.add(d1);
jp2.add(d2);
jp2.add(d3);
panel2.add(jp1);
panel2.add(jp2);

JPanel panel3=new JPanel();//復選框
panel3.setLayout(new FlowLayout(FlowLayout.CENTER,20,5));
panel3.add(e1);
panel3.add(e2);
panel3.add(lb1);lb1.setEditable(false);
panel3.add(lb2);lb2.setEditable(false);

JPanel panel4=new JPanel();//三個按鈕
panel4.setLayout(new FlowLayout(FlowLayout.CENTER,3,5));
panel4.add(a1);
panel4.add(a2);
panel4.add(a3);

JPanel panel5=new JPanel();//第一列按鈕
panel5.setLayout(new GridLayout(5,1,3,3));
panel5.add(a4);
panel5.add(a5);
panel5.add(a6);
panel5.add(a7);
panel5.add(a8);

JPanel panel6=new JPanel();//第二三四列按鈕
panel6.setLayout(new GridLayout(5,3,3,3));
panel6.add(a9);
panel6.add(a14);
panel6.add(a19);
panel6.add(a10);
panel6.add(a15);
panel6.add(a20);
panel6.add(a11);
panel6.add(a16);
panel6.add(a21);
panel6.add(a12);
panel6.add(a17);
panel6.add(a22);
panel6.add(a13);
panel6.add(a18);
panel6.add(a23);

JPanel panel7=new JPanel();//第五列按鈕
panel7.setLayout(new GridLayout(5,1,3,3));
panel7.add(a24);
panel7.add(a25);
panel7.add(a26);
panel7.add(a27);
panel7.add(a28);

JPanel panel8=new JPanel();//第六七八九十十一列按鈕
panel8.setLayout(new GridLayout(5,6,3,3));
panel8.add(a29);panel8.add(a34);panel8.add(a39);panel8.add(a44);panel8.add(a49);panel8.add(a54);
panel8.add(a30);panel8.add(a35);panel8.add(a40);panel8.add(a45);panel8.add(a50);panel8.add(a55);
panel8.add(a31);panel8.add(a36);panel8.add(a41);panel8.add(a46);panel8.add(a51);panel8.add(a56);
panel8.add(a32);panel8.add(a37);panel8.add(a42);panel8.add(a47);panel8.add(a52);panel8.add(a57);
panel8.add(a33);panel8.add(a38);panel8.add(a43);panel8.add(a48);panel8.add(a53);panel8.add(a58);

JPanel panel9=new JPanel();//前五列按鈕添加入同一個面板
panel9.setLayout(new FlowLayout(FlowLayout.CENTER,20,0));
panel9.add(panel5);
panel9.add(panel6);
panel9.add(panel7);

JPanel panel12=new JPanel();//復選框與三個按鈕添加入同一面板
panel12.setLayout(new GridLayout(1,2,200,5));
panel12.add(panel3);
panel12.add(panel4);

JPanel panel10=new JPanel();//十一列按鈕添加入同一面板
panel10.setLayout(new FlowLayout(FlowLayout.CENTER,50,3));
panel10.add(panel9);
panel10.add(panel8);

JPanel panel11=new JPanel();//單選框與菜單文本添加入同一面板
panel11.setLayout(new GridLayout(3,1));
panel11.add(panel1);
panel11.add(panel2);
panel11.add(panel12);

con.setLayout(new GridLayout(2,1));//三大塊面板合一
con.add(panel11);
con.add(panel10);
validate();
addWindowListener(new WindowCloser());
}

public class WindowCloser extends WindowAdapter
{
public void windowClosing(WindowEvent we)
{
System.exit(0);
}
}

}

public class Ex9_3
{
public static void main(String[] args)
{
new Jsq();
}
}

Ⅲ java計算器界面代碼

純原創,已編譯運行無錯誤,運用的是最簡單最基本的知識,簡單易懂,望點贊
(一)源代碼
import java.awt.*;
import java.awt.event.*;

public class JSQ
{
public static void main(String[] args)
{
//創建新的面板
JSQFrame f = new JSQFrame();
}
}

class JSQFrame extends Frame
{
double d1, d2;
int m = -1;
TextField tf;
Panel1 p1;
Panel2 p2;

JSQFrame()
{
//設置標題,位置,大小,文本框大小以及不可修改性
setTitle("計算器");
setLayout(new FlowLayout(FlowLayout.CENTER,8,10));
setSize(200,180);
setResizable(false);

tf = new TextField(20);
tf.setEditable(false);
add(tf);

p1 = new Panel1();
p2 = new Panel2();
add(p1);
add(p2);
//設置可見性
setVisible(true);
addWindowListener(new Wclose());
}

class JSQButton extends Button
{
JSQButton(String s)
{
super(s); //調用父類的方法
}
}

class Panel1 extends Panel
{
JSQButton b0, b1, b2, b3,b4, b5, b6, b7, b8, b9, bQF, bPoint;

Panel1()
{
setLayout(new GridLayout(4,4));

b0 = new JSQButton("0");
b1 = new JSQButton("1");
b2 = new JSQButton("2");
b3 = new JSQButton("3");
b4 = new JSQButton("4");
b5 = new JSQButton("5");
b6 = new JSQButton("6");

b7 = new JSQButton("7");
b8 = new JSQButton("8");
b9 = new JSQButton("9");
bQF = new JSQButton("+/-");
bPoint = new JSQButton(".");
//注冊監聽器
add(b7); b7.addActionListener(new B7());
add(b8); b8.addActionListener(new B8());
add(b9); b9.addActionListener(new B9());
add(b4); b4.addActionListener(new B4());
add(b5); b5.addActionListener(new B5());
add(b6); b6.addActionListener(new B6());
add(b1); b1.addActionListener(new B1());
add(b2); b2.addActionListener(new B2());
add(b3); b3.addActionListener(new B3());
add(b0); b0.addActionListener(new B0());
add(bPoint); bPoint.addActionListener(new BPoint());
add(bQF); bQF.addActionListener(new BQF()); ;

}
}

class Panel2 extends Panel
{
JSQButton bAdd, bSub, bMul, bDiv, bYx, bEqual, bAC, bBack;

Panel2()
{
setLayout(new GridLayout(4,4));

bAdd = new JSQButton("+");
bSub = new JSQButton("-");
bMul = new JSQButton("*");
bDiv = new JSQButton("/");
bYx = new JSQButton("^");
bEqual = new JSQButton("=");
bAC = new JSQButton("AC");
bBack = new JSQButton("DEL");
//注冊監聽器
add(bBack); bBack.addActionListener(new BBack());
add(bAC); bAC.addActionListener(new BAC());
add(bAdd); bAdd.addActionListener(new BAdd());
add(bSub); bSub.addActionListener(new BSub());
add(bMul); bMul.addActionListener(new BMul());
add(bDiv); bDiv.addActionListener(new BDiv());
add(bYx); bYx.addActionListener(new BYx());
add(bEqual); bEqual.addActionListener(new BEqual());
//設置按鈕顏色
bAC.setForeground(Color.blue);
bBack.setForeground(Color.blue);
bEqual.setForeground(Color.red);

}
}

// 實現加法的監聽器
class BAdd implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
try {
d1 = Double.parseDouble(tf.getText());
m = 0;
tf.setText("");
} catch(Exception ee) {}
}
}

class BSub implements ActionListener{
public void actionPerformed(ActionEvent e)
{
try {
d1 = Double.parseDouble(tf.getText());
m = 1;
tf.setText("");

} catch(Exception ee) {}
}
}

class BMul implements ActionListener{
public void actionPerformed(ActionEvent e)
{
try {
d1 = Double.parseDouble(tf.getText());
m = 2;
tf.setText("");
} catch(Exception ee) {}
}
}

class BDiv implements ActionListener {
public void actionPerformed(ActionEvent e)
{
try {
d1 = Double.parseDouble(tf.getText());
m = 3;
tf.setText("");
} catch(Exception ee) {}
}
}

class BYx implements ActionListener {
public void actionPerformed(ActionEvent e) {
try {
d1 = Double.parseDouble(tf.getText());
m = 4;
tf.setText("");
} catch(Exception ee) {}
}
}

class BEqual implements ActionListener {
public void actionPerformed(ActionEvent e)
{
try {
double result = 0;
d2 = Double.parseDouble(tf.getText());
switch(m)
{
case 0:result = d1 + d2;break;
case 1:result = d1 - d2;break;
case 2:result = d1 * d2;break;
case 3:result = d1 / d2;break;
case 4:result = Math.pow(d1,d2);break;
default:
}
tf.setText(String.valueOf(result));
} catch(Exception ee) {}
}
}

class BBack implements ActionListener {
public void actionPerformed(ActionEvent e) {
try {
String text = tf.getText();
text = text.substring(0,text.length()-1);
tf.setText(text);
} catch(Exception ee) {}
}
}

class BAC implements ActionListener {
public void actionPerformed(ActionEvent e) {
tf.setText("");
}
}

class BQF 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 BPoint implements ActionListener {
public void actionPerformed(ActionEvent e) {
String text = tf.getText();
if(text.lastIndexOf(".") == -1)
tf.setText(text+".");
}
}

class B0 implements ActionListener {
public void actionPerformed(ActionEvent e) {
String text = tf.getText();
tf.setText(text+"0");
}
}

class B1 implements ActionListener {
public void actionPerformed(ActionEvent e) {
String text = tf.getText();
tf.setText(text+"1");
}
}

class B2 implements ActionListener {
public void actionPerformed(ActionEvent e) {
String text = tf.getText();
tf.setText(text+"2");
}
}

class B3 implements ActionListener {
public void actionPerformed(ActionEvent e) {
String text = tf.getText();
tf.setText(text+"3");
}
}

class B4 implements ActionListener {
public void actionPerformed(ActionEvent e) {
String text = tf.getText();
tf.setText(text+"4");
}
}

class B5 implements ActionListener {
public void actionPerformed(ActionEvent e) {
String text = tf.getText();
tf.setText(text+"5");
}
}

class B6 implements ActionListener {
public void actionPerformed(ActionEvent e)
{
String text = tf.getText();
tf.setText(text+"6");
}
}

class B7 implements ActionListener {
public void actionPerformed(ActionEvent e) {
String text = tf.getText();
tf.setText(text+"7");
}
}

class B8 implements ActionListener {
public void actionPerformed(ActionEvent e) {
String text = tf.getText();
tf.setText(text+"8");
}
}

class B9 implements ActionListener {
public void actionPerformed(ActionEvent e) {
String text = tf.getText();
tf.setText(text+"9");
}
}

//設置關閉時窗口的動作
class Wclose extends WindowAdapter {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
}

(二)編程思路:1,我們創建了一個框架;2,獲取內容窗格、建立面板並將面板放入內容窗格之中;3,將按鈕放入面板之中;4,通過注冊監聽器響應事件。
(三)演算法:1.用switch語句比較m的值,設置0 1 2 3 4分別為加 減 乘 除以及冪運算,設置加減乘除進行加減乘除運算,並將result的值賦給tf在文本框中顯示;2.通過substring方法,實現退格的功能,並且返還tf的值在文本框中顯示;3.按下「加減乘除」按鈕前面的tf賦值給d1,按下「等於」按鈕前的tf賦值給d2,以此來獲取數值進行運算。
(四)程序說明:在我們所編寫的程序中引用了兩個包:java.awt.*; java.awt.event.*;設計了25個類:JSQ(公共類)、JSQFrame、JSQButton、Panel1、Panel2、BBack、 BAC、 BAdd 、
BSub、 BEqual、BDiv 、BYx、BMul、 BQF 、BPoint、B0、 B1、 B2 、
B3、 B4、 B5 、B6 、B7、 B8、 B9 。
在JSQ中的main ()方法中用類JSQFrame創建了一個frame對象,JSQFrame類繼承Frame類;用textField創建了tf對象;創建了Panel類p1,p2;
(1) 在該類中設置了框架的標題,尺寸,位置,文本框大小以及不可修改性;
(2) 在JSQButton類中調用了父類中的構造方法;
(3) 在Panel1、Pane2中設置了按鈕,為每個按鈕創建了監聽器並且注冊了監聽器。
(4) 用Double.parseDouble()方法將textField類轉為double類,並用catch語句來進行異常處理。

Ⅳ Java圖形界面簡單計算器

示例代碼如下,請參考:

packagetest.com.test;

importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;

publicclassCal{

TextFieldtf=newTextField(40);//顯示文本框
StringBuffers1=newStringBuffer();//記錄運算數字,以及保留結果
StringBuffers2=newStringBuffer();//記錄運算數字,保留上一個輸入的數字或運算結果
staticStringflag=newString();//標記運算符號:+,-,*,/
booleanstart=true;//標記運算開始或結束,保證一次運算之後,第二次進行運算時能同時清空顯示界面,即s1為空

publicvoidinit(){
//主界面
JFramef=newJFrame("計算器");
JPanelp1=newJPanel();
p1.add(tf);
f.add(p1,BorderLayout.NORTH);
JPanelp2=newJPanel();
p2.setLayout(newGridLayout(1,3));
//動作監聽器
ActionListenerlisten=newActionListener(){

publicvoidactionPerformed(ActionEventarg0){

//輸入數字0~9
if(arg0.getActionCommand()=="0"){

if(!s1.toString().equals(newString())){
if(!start){
//s1清零,保證可以重新輸入數字
s1.delete(0,s1.length());
}
start=true;
tf.setText(s1.append("0").toString());
}
}
if(arg0.getActionCommand()=="1"){
if(!start){
s1.delete(0,s1.length());
}
start=true;
tf.setText(s1.append("1").toString());
}
if(arg0.getActionCommand()=="2"){
if(!start){
s1.delete(0,s1.length());
}
start=true;
tf.setText(s1.append("2").toString());
}
if(arg0.getActionCommand()=="3"){
if(!start){
s1.delete(0,s1.length());
}
start=true;
tf.setText(s1.append("3").toString());
}
if(arg0.getActionCommand()=="4"){
if(!start){
s1.delete(0,s1.length());
}
start=true;
tf.setText(s1.append("4").toString());
}
if(arg0.getActionCommand()=="5"){
if(!start){
s1.delete(0,s1.length());
}
start=true;
tf.setText(s1.append("5").toString());
}
if(arg0.getActionCommand()=="6"){
if(!start){
s1.delete(0,s1.length());
}
start=true;
tf.setText(s1.append("6").toString());
}
if(arg0.getActionCommand()=="7"){
if(!start){
s1.delete(0,s1.length());
}
start=true;
tf.setText(s1.append("7").toString());
}
if(arg0.getActionCommand()=="8"){
if(!start){
s1.delete(0,s1.length());
}
start=true;
tf.setText(s1.append("8").toString());
}
if(arg0.getActionCommand()=="9"){
if(!start){
s1.delete(0,s1.length());
}
start=true;
tf.setText(s1.append("9").toString());
}
//輸入小數點
if(arg0.getActionCommand()=="."){
if(!start){
s1.delete(0,s1.length());
}
start=true;
if(s1.toString().equals(newString()))
tf.setText(s1.append("0.").toString());
elseif(s1.length()==1&&s1.charAt(0)=='-')
tf.setText(s1.append("0.").toString());
else
tf.setText(s1.append(".").toString());
}
//輸入負號
if(arg0.getActionCommand()=="+/-"){
if(!start){
s1.delete(0,s1.length());
}
start=true;
if(s1.toString().equals(newString()))
tf.setText(s1.append('-').toString());
}
//退格Backspace
if(arg0.getActionCommand()=="Backspace"){
start=true;
if(s1.length()!=0){
//刪除最後輸入的一位
s1.deleteCharAt(s1.length()-1);
tf.setText(s1.toString());
}
}
//歸零CE
if(arg0.getActionCommand()=="CE"){
//清空所有,start標記設為true
start=true;
s1.delete(0,s1.length());
s2.delete(0,s2.length());
tf.setText(s1.toString());
}
//清除C
if(arg0.getActionCommand()=="C"){
//清空當前輸入,即s1清零
start=true;
s1.delete(0,s1.length());
tf.setText(s1.toString());
}
//加號
if(arg0.getActionCommand()=="+"){
start=true;
flag="+";
//s2接收s1的值
s2.append(String.valueOf(s1.toString()));
//s1清零,重新接收下一個數據
s1.delete(0,s1.length());
tf.setText(s1.toString());
}
//減號
if(arg0.getActionCommand()=="-"){
start=true;
flag="-";
s2.append(String.valueOf(s1.toString()));
s1.delete(0,s1.length());
tf.setText(s1.toString());
}
//乘號
if(arg0.getActionCommand()=="*"){
start=true;
flag="*";
s2.append(String.valueOf(s1.toString()));
s1.delete(0,s1.length());
tf.setText(s1.toString());
}
//除號
if(arg0.getActionCommand()=="/"){
start=true;
flag="/";
s2.append(String.valueOf(s1.toString()));
s1.delete(0,s1.length());
tf.setText(s1.toString());
}
//開根號
if(arg0.getActionCommand()=="sqrt"){
start=false;
doubles=Double.parseDouble(s1.toString());
s1.delete(0,s1.length());
tf.setText(s1.append(String.valueOf(Math.sqrt(s))).toString());
}
//求%
if(arg0.getActionCommand()=="%"){
start=false;
doubles=Double.parseDouble(s1.toString());
s1.delete(0,s1.length());
tf.setText(s1.append(String.valueOf(s/100)).toString());
}
//求1/x
if(arg0.getActionCommand()=="1/x"&&!s1.toString().equals(newString())&&Double.parseDouble(s1.toString())!=0){
start=false;
doubles=Double.parseDouble(s1.toString());
s1.delete(0,s1.length());
tf.setText(s1.append(String.valueOf(1/s)).toString());
}
//求結果
if(arg0.getActionCommand()=="="&&s1.length()!=0&&s2.length()!=0){
//start標記為false
start=false;
//分別獲取s1和s2的值
doubles4=Double.parseDouble(s1.toString());
doubles3=Double.parseDouble(s2.toString());
//清空s1和s2,便於開始下一次運算
s1.delete(0,s1.length());
s2.delete(0,s2.length());
//四則運算
if(flag=="+"){
tf.setText(s1.append(String.valueOf(s3+s4)).toString());
}
if(flag=="-"){
tf.setText(s1.append(String.valueOf(s3-s4)).toString());
}
if(flag=="*"){
tf.setText(s1.append(String.valueOf(s3*s4)).toString());
}
if(flag=="/"){
tf.setText(s1.append(String.valueOf(s3/s4)).toString());
}
}

}
};
//添加按鈕以及監聽器
JButtonbks=newJButton("Backspace");
bks.addActionListener(listen);
JButtonce=newJButton("CE");
ce.addActionListener(listen);
JButtonc=newJButton("C");
c.addActionListener(listen);
p2.add(bks);
p2.add(ce);
p2.add(c);
f.add(p2);
JPanelp3=newJPanel();
p3.setLayout(newGridLayout(4,5));
JButtonb1=newJButton("7");
p3.add(b1);
b1.addActionListener(listen);
JButtonb2=newJButton("8");
p3.add(b2);
b2.addActionListener(listen);
JButtonb3=newJButton("9");
p3.add(b3);
b3.addActionListener(listen);
JButtonb4=newJButton("/");
p3.add(b4);
b4.addActionListener(listen);
JButtonb5=newJButton("sqrt");
p3.add(b5);
b5.addActionListener(listen);
JButtonb6=newJButton("4");
p3.add(b6);
b6.addActionListener(listen);
JButtonb7=newJButton("5");
p3.add(b7);
b7.addActionListener(listen);
JButtonb8=newJButton("6");
p3.add(b8);
b8.addActionListener(listen);
JButtonb9=newJButton("*");
p3.add(b9);
b9.addActionListener(listen);
JButtonb10=newJButton("%");
p3.add(b10);
b10.addActionListener(listen);
JButtonb11=newJButton("1");
p3.add(b11);
b11.addActionListener(listen);
JButtonb12=newJButton("2");
p3.add(b12);
b12.addActionListener(listen);
JButtonb13=newJButton("3");
p3.add(b13);
b13.addActionListener(listen);
JButtonb14=newJButton("-");
p3.add(b14);
b14.addActionListener(listen);
JButtonb15=newJButton("1/x");
p3.add(b15);
b15.addActionListener(listen);
JButtonb16=newJButton("0");
p3.add(b16);
b16.addActionListener(listen);
JButtonb17=newJButton("+/-");
p3.add(b17);
b17.addActionListener(listen);
JButtonb18=newJButton(".");
p3.add(b18);
b18.addActionListener(listen);
JButtonb19=newJButton("+");
p3.add(b19);
b19.addActionListener(listen);
JButtonb20=newJButton("=");
p3.add(b20);
b20.addActionListener(listen);
f.add(p3,BorderLayout.SOUTH);
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.pack();
f.setVisible(true);
}

publicstaticvoidmain(Stringargs[]){
//調用方法,實現計算器
newCal().init();
}

}

Ⅳ JAVA圖形用戶界面設計一個簡易計算器

下午發
五分鍾搞定,先給你發個簡單的,照例子自己去做你想要的計算器
package aaa;
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class YunSuan implements ActionListener,ItemListener
{
public static JFrame jf;
public static Container c;
public static JTextField jtf1,jtf2,jtf3;
public static JButton jb1;
public static Choice c2;

public static String fuhao="";

public YunSuan()
{
jf=new JFrame("加減乘除運算");
c=jf.getContentPane();
c.setLayout(new FlowLayout());
jtf1=new JTextField(10);
jtf2=new JTextField(10);
jtf3=new JTextField(10);
c2=new Choice();
jb1=new JButton("=");

}

public void Jiemian()
{

c.add(jtf1);
c2.addItemListener(this);
c2.add("");
c2.add("+");
c2.add("-");
c2.add("*");
c2.add("/");
c.add(c2);
c.add(jtf2);
jb1.addActionListener(this);
c.add(jb1);
c.add(jtf3);

jf.setLocation(200,100);
jf.setVisible(true);
jf.pack();
}
public static void main(String args[])
{
YunSuan ys=new YunSuan();
ys.Jiemian();
}

public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
double s1=Integer.parseInt(jtf1.getText());
double s2=Integer.parseInt(jtf2.getText());
double result=0;
if(fuhao.equals("+"))
{
result=s1+s2;
String result2=String.valueOf(result);
jtf3.setText(result2);
}
if(fuhao.equals("-"))
{
result=s1-s2;
String result2=String.valueOf(result);
jtf3.setText(result2);
}
if(fuhao.equals("*"))
{
result=s1*s2;
String result2=String.valueOf(result);
jtf3.setText(result2);
}
if(fuhao.equals("/"))
{
result=s1/s2;
String result2=String.valueOf(result);
jtf3.setText(result2);
}
}

public void itemStateChanged(ItemEvent ie)
{
if(ie.getSource()==c2)
{
String str1=c2.getSelectedItem();
fanhui(str1);
}
}
public String fanhui(String str2)
{
return fuhao=str2;
}
}

Ⅵ 用java編寫了一個模擬計算器的界面設計,怎麼實現運算功能呢

view sourceprint?
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

/**
* 一個計算器,與Windows附件自帶計算器的標准版功能、界面相仿。 但還不支持鍵盤操作。
*/
public class Calculator extends JFrame implements ActionListener {
/** 計算器上的鍵的顯示名字 */
private final String[] KEYS = { "7", "8", "9", "/", "sqrt", "4", "5", "6",
"*", "%", "1", "2", "3", "-", "1/x", "0", "+/-", ".", "+", "=" };
/** 計算器上的功能鍵的顯示名字 */
private final String[] COMMAND = { "Backspace", "CE", "C" };
/** 計算器左邊的M的顯示名字 */
private final String[] M = { " ", "MC", "MR", "MS", "M+" };
/** 計算器上鍵的按鈕 */
private JButton keys[] = new JButton[KEYS.length];
/** 計算器上的功能鍵的按鈕 */
private JButton commands[] = new JButton[COMMAND.length];
/** 計算器左邊的M的按鈕 */
private JButton m[] = new JButton[M.length];
/** 計算結果文本框 */
private JTextField resultText = new JTextField("0");

// 標志用戶按的是否是整個表達式的第一個數字,或者是運算符後的第一個數字
private boolean firstDigit = true;
// 計算的中間結果。
private double resultNum = 0.0;
// 當前運算的運算符
private String operator = "=";
// 操作是否合法
private boolean operateValidFlag = true;

/**
* 構造函數
*/
public Calculator() {
super();
// 初始化計算器
init();
// 設置計算器的背景顏色
this.setBackground(Color.LIGHT_GRAY);
this.setTitle("計算器");
// 在屏幕(500, 300)坐標處顯示計算器
this.setLocation(500, 300);
// 不許修改計算器的大小
this.setResizable(false);
// 使計算器中各組件大小合適
this.pack();
}

/**
* 初始化計算器
*/
private void init() {
// 文本框中的內容採用右對齊方式
resultText.setHorizontalAlignment(JTextField.RIGHT);
// 不允許修改結果文本框
resultText.setEditable(false);
// 設置文本框背景顏色為白色
resultText.setBackground(Color.WHITE);

// 初始化計算器上鍵的按鈕,將鍵放在一個畫板內
JPanel calckeysPanel = new JPanel();
// 用網格布局器,4行,5列的網格,網格之間的水平方向間隔為3個象素,垂直方向間隔為3個象素
calckeysPanel.setLayout(new GridLayout(4, 5, 3, 3));
for (int i = 0; i < KEYS.length; i++) {
keys[i] = new JButton(KEYS[i]);
calckeysPanel.add(keys[i]);
keys[i].setForeground(Color.blue);
}
// 運算符鍵用紅色標示,其他鍵用藍色表示
keys[3].setForeground(Color.red);
keys[8].setForeground(Color.red);
keys[13].setForeground(Color.red);
keys[18].setForeground(Color.red);
keys[19].setForeground(Color.red);

// 初始化功能鍵,都用紅色標示。將功能鍵放在一個畫板內
JPanel commandsPanel = new JPanel();
// 用網格布局器,1行,3列的網格,網格之間的水平方向間隔為3個象素,垂直方向間隔為3個象素
commandsPanel.setLayout(new GridLayout(1, 3, 3, 3));
for (int i = 0; i < COMMAND.length; i++) {
commands[i] = new JButton(COMMAND[i]);
commandsPanel.add(commands[i]);
commands[i].setForeground(Color.red);
}

// 初始化M鍵,用紅色標示,將M鍵放在一個畫板內
JPanel calmsPanel = new JPanel();
// 用網格布局管理器,5行,1列的網格,網格之間的水平方向間隔為3個象素,垂直方向間隔為3個象素
calmsPanel.setLayout(new GridLayout(5, 1, 3, 3));
for (int i = 0; i < M.length; i++) {
m[i] = new JButton(M[i]);
calmsPanel.add(m[i]);
m[i].setForeground(Color.red);
}

// 下面進行計算器的整體布局,將calckeys和command畫板放在計算器的中部,
// 將文本框放在北部,將calms畫板放在計算器的西部。

// 新建一個大的畫板,將上面建立的command和calckeys畫板放在該畫板內
JPanel panel1 = new JPanel();
// 畫板採用邊界布局管理器,畫板里組件之間的水平和垂直方向上間隔都為3象素
panel1.setLayout(new BorderLayout(3, 3));
panel1.add("North", commandsPanel);
panel1.add("Center", calckeysPanel);

// 建立一個畫板放文本框
JPanel top = new JPanel();
top.setLayout(new BorderLayout());
top.add("Center", resultText);

// 整體布局
getContentPane().setLayout(new BorderLayout(3, 5));
getContentPane().add("North", top);
getContentPane().add("Center", panel1);
getContentPane().add("West", calmsPanel);
// 為各按鈕添加事件偵聽器
// 都使用同一個事件偵聽器,即本對象。本類的聲明中有implements ActionListener
for (int i = 0; i < KEYS.length; i++) {
keys[i].addActionListener(this);
}
for (int i = 0; i < COMMAND.length; i++) {
commands[i].addActionListener(this);
}
for (int i = 0; i < M.length; i++) {
m[i].addActionListener(this);
}
}

/**
* 處理事件
*/
public void actionPerformed(ActionEvent e) {
// 獲取事件源的標簽
String label = e.getActionCommand();
if (label.equals(COMMAND[0])) {
// 用戶按了"Backspace"鍵
handleBackspace();
} else if (label.equals(COMMAND[1])) {
// 用戶按了"CE"鍵
resultText.setText("0");
} else if (label.equals(COMMAND[2])) {
// 用戶按了"C"鍵
handleC();
} else if ("0123456789.".indexOf(label) >= 0) {
// 用戶按了數字鍵或者小數點鍵
handleNumber(label);
// handlezero(zero);
} else {
// 用戶按了運算符鍵
handleOperator(label);
}
}

/**
* 處理Backspace鍵被按下的事件
*/
private void handleBackspace() {
String text = resultText.getText();
int i = text.length();
if (i > 0) {
// 退格,將文本最後一個字元去掉
text = text.substring(0, i - 1);
if (text.length() == 0) {
// 如果文本沒有了內容,則初始化計算器的各種值
resultText.setText("0");
firstDigit = true;
operator = "=";
} else {
// 顯示新的文本
resultText.setText(text);
}
}
}

/**
* 處理數字鍵被按下的事件
*
* @param key
*/
private void handleNumber(String key) {
if (firstDigit) {
// 輸入的第一個數字
resultText.setText(key);
} else if ((key.equals(".")) && (resultText.getText().indexOf(".") < 0)) {
// 輸入的是小數點,並且之前沒有小數點,則將小數點附在結果文本框的後面
resultText.setText(resultText.getText() + ".");
} else if (!key.equals(".")) {
// 如果輸入的不是小數點,則將數字附在結果文本框的後面
resultText.setText(resultText.getText() + key);
}
// 以後輸入的肯定不是第一個數字了
firstDigit = false;
}

/**
* 處理C鍵被按下的事件
*/
private void handleC() {
// 初始化計算器的各種值
resultText.setText("0");
firstDigit = true;
operator = "=";
}

/**
* 處理運算符鍵被按下的事件
*
* @param key
*/
private void handleOperator(String key) {
if (operator.equals("/")) {
// 除法運算
// 如果當前結果文本框中的值等於0
if (getNumberFromText() == 0.0) {
// 操作不合法
operateValidFlag = false;
resultText.setText("除數不能為零");
} else {
resultNum /= getNumberFromText();
}
} else if (operator.equals("1/x")) {
// 倒數運算
if (resultNum == 0.0) {
// 操作不合法
operateValidFlag = false;
resultText.setText("零沒有倒數");
} else {
resultNum = 1 / resultNum;
}
} else if (operator.equals("+")) {
// 加法運算
resultNum += getNumberFromText();
} else if (operator.equals("-")) {
// 減法運算
resultNum -= getNumberFromText();
} else if (operator.equals("*")) {
// 乘法運算
resultNum *= getNumberFromText();
} else if (operator.equals("sqrt")) {
// 平方根運算
resultNum = Math.sqrt(resultNum);
} else if (operator.equals("%")) {
// 百分號運算,除以100
resultNum = resultNum / 100;
} else if (operator.equals("+/-")) {
// 正數負數運算
resultNum = resultNum * (-1);
} else if (operator.equals("=")) {
// 賦值運算
resultNum = getNumberFromText();
}
if (operateValidFlag) {
// 雙精度浮點數的運算
long t1;
double t2;
t1 = (long) resultNum;
t2 = resultNum - t1;
if (t2 == 0) {
resultText.setText(String.valueOf(t1));
} else {
resultText.setText(String.valueOf(resultNum));
}
}
// 運算符等於用戶按的按鈕
operator = key;
firstDigit = true;
operateValidFlag = true;
}

/**
* 從結果文本框中獲取數字
*
* @return
*/
private double getNumberFromText() {
double result = 0;
try {
result = Double.valueOf(resultText.getText()).doubleValue();
} catch (NumberFormatException e) {
}
return result;
}

public static void main(String args[]) {
Calculator calculator1 = new Calculator();
calculator1.setVisible(true);
calculator1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

Ⅶ 求java編程,windows的計算器界面,只要出現計算器界面,不要計算器的計算功能代碼

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

/**
* 一個計算器,與Windows附件自帶計算器的標准版功能、界面相仿。 但還不支持鍵盤操作。
*/
public class Calculator extends JFrame implements ActionListener {
/** 計算器上的鍵的顯示名字 */
private final String[] KEYS = { "7", "8", "9", "/", "sqrt", "4", "5", "6",
"*", "%", "1", "2", "3", "-", "1/x", "0", "+/-", ".", "+", "=" };
/** 計算器上的功能鍵的顯示名字 */
private final String[] COMMAND = { "Backspace", "CE", "C" };
/** 計算器左邊的M的顯示名字 */
private final String[] M = { " ", "MC", "MR", "MS", "M+" };
/** 計算器上鍵的按鈕 */
private JButton keys[] = new JButton[KEYS.length];
/** 計算器上的功能鍵的按鈕 */
private JButton commands[] = new JButton[COMMAND.length];
/** 計算器左邊的M的按鈕 */
private JButton m[] = new JButton[M.length];
/** 計算結果文本框 */
private JTextField resultText = new JTextField("0");

// 標志用戶按的是否是整個表達式的第一個數字,或者是運算符後的第一個數字
private boolean firstDigit = true;
// 計算的中間結果。
private double resultNum = 0.0;
// 當前運算的運算符
private String operator = "=";
// 操作是否合法
private boolean operateValidFlag = true;

/**
* 構造函數
*/
public Calculator() {
super();
// 初始化計算器
init();
// 設置計算器的背景顏色
this.setBackground(Color.LIGHT_GRAY);
this.setTitle("計算器");
// 在屏幕(500, 300)坐標處顯示計算器
this.setLocation(500, 300);
// 不許修改計算器的大小
this.setResizable(false);
// 使計算器中各組件大小合適
this.pack();
}

/**
* 初始化計算器
*/
private void init() {
// 文本框中的內容採用右對齊方式
resultText.setHorizontalAlignment(JTextField.RIGHT);
// 不允許修改結果文本框
resultText.setEditable(false);
// 設置文本框背景顏色為白色
resultText.setBackground(Color.WHITE);

// 初始化計算器上鍵的按鈕,將鍵放在一個畫板內
JPanel calckeysPanel = new JPanel();
// 用網格布局器,4行,5列的網格,網格之間的水平方向間隔為3個象素,垂直方向間隔為3個象素
calckeysPanel.setLayout(new GridLayout(4, 5, 3, 3));
for (int i = 0; i < KEYS.length; i++) {
keys[i] = new JButton(KEYS[i]);
calckeysPanel.add(keys[i]);
keys[i].setForeground(Color.blue);
}
// 運算符鍵用紅色標示,其他鍵用藍色表示
keys[3].setForeground(Color.red);
keys[8].setForeground(Color.red);
keys[13].setForeground(Color.red);
keys[18].setForeground(Color.red);
keys[19].setForeground(Color.red);

// 初始化功能鍵,都用紅色標示。將功能鍵放在一個畫板內
JPanel commandsPanel = new JPanel();
// 用網格布局器,1行,3列的網格,網格之間的水平方向間隔為3個象素,垂直方向間隔為3個象素
commandsPanel.setLayout(new GridLayout(1, 3, 3, 3));
for (int i = 0; i < COMMAND.length; i++) {
commands[i] = new JButton(COMMAND[i]);
commandsPanel.add(commands[i]);
commands[i].setForeground(Color.red);
}

// 初始化M鍵,用紅色標示,將M鍵放在一個畫板內
JPanel calmsPanel = new JPanel();
// 用網格布局管理器,5行,1列的網格,網格之間的水平方向間隔為3個象素,垂直方向間隔為3個象素
calmsPanel.setLayout(new GridLayout(5, 1, 3, 3));
for (int i = 0; i < M.length; i++) {
m[i] = new JButton(M[i]);
calmsPanel.add(m[i]);
m[i].setForeground(Color.red);
}

// 下面進行計算器的整體布局,將calckeys和command畫板放在計算器的中部,
// 將文本框放在北部,將calms畫板放在計算器的西部。

// 新建一個大的畫板,將上面建立的command和calckeys畫板放在該畫板內
JPanel panel1 = new JPanel();
// 畫板採用邊界布局管理器,畫板里組件之間的水平和垂直方向上間隔都為3象素
panel1.setLayout(new BorderLayout(3, 3));
panel1.add("North", commandsPanel);
panel1.add("Center", calckeysPanel);

// 建立一個畫板放文本框
JPanel top = new JPanel();
top.setLayout(new BorderLayout());
top.add("Center", resultText);

// 整體布局
getContentPane().setLayout(new BorderLayout(3, 5));
getContentPane().add("North", top);
getContentPane().add("Center", panel1);
getContentPane().add("West", calmsPanel);
// 為各按鈕添加事件偵聽器
// 都使用同一個事件偵聽器,即本對象。本類的聲明中有implements ActionListener
for (int i = 0; i < KEYS.length; i++) {
keys[i].addActionListener(this);
}
for (int i = 0; i < COMMAND.length; i++) {
commands[i].addActionListener(this);
}
for (int i = 0; i < M.length; i++) {
m[i].addActionListener(this);
}
}

/**
* 處理事件
*/
public void actionPerformed(ActionEvent e) {
// 獲取事件源的標簽
String label = e.getActionCommand();
if (label.equals(COMMAND[0])) {
// 用戶按了"Backspace"鍵
handleBackspace();
} else if (label.equals(COMMAND[1])) {
// 用戶按了"CE"鍵
resultText.setText("0");
} else if (label.equals(COMMAND[2])) {
// 用戶按了"C"鍵
handleC();
} else if ("0123456789.".indexOf(label) >= 0) {
// 用戶按了數字鍵或者小數點鍵
handleNumber(label);
// handlezero(zero);
} else {
// 用戶按了運算符鍵
handleOperator(label);
}
}

/**
* 處理Backspace鍵被按下的事件
*/
private void handleBackspace() {
String text = resultText.getText();
int i = text.length();
if (i > 0) {
// 退格,將文本最後一個字元去掉
text = text.substring(0, i - 1);
if (text.length() == 0) {
// 如果文本沒有了內容,則初始化計算器的各種值
resultText.setText("0");
firstDigit = true;
operator = "=";
} else {
// 顯示新的文本
resultText.setText(text);
}
}
}

/**
* 處理數字鍵被按下的事件
*
* @param key
*/
private void handleNumber(String key) {
if (firstDigit) {
// 輸入的第一個數字
resultText.setText(key);
} else if ((key.equals(".")) && (resultText.getText().indexOf(".") < 0)) {
// 輸入的是小數點,並且之前沒有小數點,則將小數點附在結果文本框的後面
resultText.setText(resultText.getText() + ".");
} else if (!key.equals(".")) {
// 如果輸入的不是小數點,則將數字附在結果文本框的後面
resultText.setText(resultText.getText() + key);
}
// 以後輸入的肯定不是第一個數字了
firstDigit = false;
}

/**
* 處理C鍵被按下的事件
*/
private void handleC() {
// 初始化計算器的各種值
resultText.setText("0");
firstDigit = true;
operator = "=";
}

/**
* 處理運算符鍵被按下的事件
*
* @param key
*/
private void handleOperator(String key) {
if (operator.equals("/")) {
// 除法運算
// 如果當前結果文本框中的值等於0
if (getNumberFromText() == 0.0) {
// 操作不合法
operateValidFlag = false;
resultText.setText("除數不能為零");
} else {
resultNum /= getNumberFromText();
}
} else if (operator.equals("1/x")) {
// 倒數運算
if (resultNum == 0.0) {
// 操作不合法
operateValidFlag = false;
resultText.setText("零沒有倒數");
} else {
resultNum = 1 / resultNum;
}
} else if (operator.equals("+")) {
// 加法運算
resultNum += getNumberFromText();
} else if (operator.equals("-")) {
// 減法運算
resultNum -= getNumberFromText();
} else if (operator.equals("*")) {
// 乘法運算
resultNum *= getNumberFromText();
} else if (operator.equals("sqrt")) {
// 平方根運算
resultNum = Math.sqrt(resultNum);
} else if (operator.equals("%")) {
// 百分號運算,除以100
resultNum = resultNum / 100;
} else if (operator.equals("+/-")) {
// 正數負數運算
resultNum = resultNum * (-1);
} else if (operator.equals("=")) {
// 賦值運算
resultNum = getNumberFromText();
}
if (operateValidFlag) {
// 雙精度浮點數的運算
long t1;
double t2;
t1 = (long) resultNum;
t2 = resultNum - t1;
if (t2 == 0) {
resultText.setText(String.valueOf(t1));
} else {
resultText.setText(String.valueOf(resultNum));
}
}
// 運算符等於用戶按的按鈕
operator = key;
firstDigit = true;
operateValidFlag = true;
}

/**
* 從結果文本框中獲取數字
*
* @return
*/
private double getNumberFromText() {
double result = 0;
try {
result = Double.valueOf(resultText.getText()).doubleValue();
} catch (NumberFormatException e) {
}
return result;
}

public static void main(String args[]) {
Calculator calculator1 = new Calculator();
calculator1.setVisible(true);
calculator1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}