當前位置:編程學習大全網 - 編程語言 - 計算器制作JAVA版(第三步,表達式求值(+

計算器制作JAVA版(第三步,表達式求值(+

1.首先思考壹下制作計算器需要哪些Swing組件,下面列出壹些制作計算器的壹些常用組件:

JFrame Jpanel JButton JTextField

2.選用布局管理器:

這裏采用的是GridBagLayout,即網格包布局管理器。

3.如何處理按鈕事件:

這裏可以分兩種情況來考慮,壹:處理0~9的數字按鈕和"."按鈕,這種按鈕的單擊事件很簡單,只需要獲取監聽的對象,並在文本框中顯示對象的數據即可。

二:處理操作按鈕即文本為+,-,*,/,C(清除),D(刪除)和=的按鈕,這些按鈕的事件處理稍微復雜。

4.具體實現代碼如下:

1.創建Calculator類,該類繼承自JFrame類

[java]?view plain?copy

import?java.awt.BorderLayout;?

import?java.awt.GridBagConstraints;?

import?java.awt.GridBagLayout;?

import?java.awt.event.ActionEvent;?

import?java.awt.event.ActionListener;?

import?javax.swing.JButton;?

import?javax.swing.JFrame;?

import?javax.swing.JOptionPane;?

import?javax.swing.JPanel;?

import?javax.swing.JTextField;?

public?class?Calculator?extends?JFrame?{?

private?static?final?long?serialVersionUID?=?1L;?

private?JTextField?jtf=new?JTextField();?

private?JPanel?panel=new?JPanel();?

private?GridBagLayout?gridbaglayout=new?GridBagLayout();?

private?GridBagConstraints?constraints=new?GridBagConstraints();?

private?int?select=0;?

//private?String?command="";?

private?double?temp=0.0;?

private?double?number;?

public?Calculator(){//創建Calculator類的構造方法?

this.setTitle("計算器");?

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);?

this.add(jtf,BorderLayout.NORTH);?

this.add(panel,?BorderLayout.CENTER);?

panel.setLayout(gridbaglayout);//將panel面板設置成網格包布局管理器?

this.add(panel);?

jtf.setHorizontalAlignment(JTextField.RIGHT);?//文本靠右

ActionListener?nums=new?CalculatorAction1();?

ActionListener?opin=new?CalculatorAction2();?

constraints.fill=GridBagConstraints.BOTH;?

//?constraints.weightx=0.1;?

//?constraints.weighty=0.1;?

constraints.gridheight=GridBagConstraints.REMAINDER;?

addButton("",nums);?

constraints.gridheight=1;?

addButton("C",opin);?

addButton("7",nums);?

addButton("4",nums);?

addButton("1",nums);?

constraints.gridheight=GridBagConstraints.REMAINDER;?

addButton("%",nums);?

constraints.gridheight=1;?

addButton("D",opin);?

addButton("8",nums);?

addButton("5",nums);?

addButton("2",nums);?

constraints.gridheight=GridBagConstraints.REMAINDER;?

addButton("0",nums);?

constraints.gridheight=1;?

addButton("/",opin);?

addButton("9",nums);?

addButton("6",nums);?

addButton("3",nums);?

constraints.gridheight=GridBagConstraints.REMAINDER;?

addButton(".",nums);?

constraints.gridheight=1;?

addButton("*",opin);?

addButton("-",opin);?

addButton("+",opin);?

constraints.gridheight=GridBagConstraints.REMAINDER;?

addButton("=",opin);?

}?

private?void?addButton(String?str,ActionListener?list){?//添加按鈕方法?

JButton?button=new?JButton(str);?

if(str.equals("")||str.equals("%")){?

button.setEnabled(false);?

}?

button.addActionListener(list);?//向按鈕添加事件?

gridbaglayout.setConstraints(button,?constraints);?

panel.add(button);//將按鈕添加到JPanel容器中

}?

class?CalculatorAction1?implements?ActionListener{//創建內部類並實現ActionListener接口,實現數字按鈕的監聽事件?

public?void?actionPerformed(ActionEvent?e){?

String?input?=?e.getActionCommand();?

//?System.out.println(input);?

jtf.setText(jtf.getText()+input);//在文本中顯示用戶單擊的按鈕文本內容?

}?

}?

class?CalculatorAction2?implements?ActionListener{?//創建內部類並實現ActionListener接口,實現操作按鈕的監聽事件?

public?void?actionPerformed(ActionEvent?e){?

String?command=e.getActionCommand();?

if(command.equals("+")){?

temp=Double.parseDouble(jtf.getText());?

jtf.setText("");?

select=1;?

}?

if(command.equals("-")){?

temp=Double.parseDouble(jtf.getText());?

jtf.setText("");?

select=2;?

}?

if(command.equals("*")){?

temp=Double.parseDouble(jtf.getText());?

jtf.setText("");?

select=3;?

}?

if(command.equals("/")){?

temp=Double.parseDouble(jtf.getText());?

jtf.setText("");?

select=4;?

}?

if(command.equals("C")){?

jtf.setText("");?

}?

if(command.equals("D")){?

jtf.setText(jtf.getText().substring(0,?jtf.getText().length()-1));?

}?

if(command.equals("=")){?

if(select==1){?

number=Double.parseDouble(jtf.getText());?

jtf.setText((temp+number)+"");?

}?

else?if(select==2){?

number=Double.parseDouble(jtf.getText());?

jtf.setText((temp-number)+"");?

}?

else?if(select==3){?

number=Double.parseDouble(jtf.getText());?

jtf.setText((temp*number)+"");?

}?

else?if(select==4){?

number=Double.parseDouble(jtf.getText());?

if(number==0){?

JOptionPane.showMessageDialog(panel,?"除數不能為0");?

}?

else?

jtf.setText((temp/number)+"");?

}?

}?

}?

}?

}?

2.創建CalculatorTest類

[java]?view plain?copy

public?class?CalculatorTest?{?

public?static?void?main(String[]?args)?{?

Calculator?mainFrame=new?Calculator();?

mainFrame.setBounds(300,?200,?200,?200);?

mainFrame.setVisible(true);?

mainFrame.setResizable(false);?

}?

}?

閱讀全文

  • 上一篇:不少孩子上學時總是沈迷網吧,老師該如何進行教育?
  • 下一篇:什麽是微型機器人?
  • copyright 2024編程學習大全網