importjava.awt.GridLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.WindowAdapter;importjava.awt.event.WindowEvent;importjavax.swing.ButtonGroup;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JPanel;importjavax.swing.JRadioButton;importjavax.swing.JTextField;
@SuppressWarnings("serial")public class CalculateFrame extendsJFrame{privateJTextField textData1, textData2, textResult;privateJLabel labelNum1, labelNum2, labelResult;privateJRadioButton radioAdd, radioSub, radioMul, radioDiv;privateJButton btnCalculate;privateOperation oper;//进行运算的两个数字和结果
privateString data1, data2, operation;private doubleresultNum;publicCalculateFrame(){//设置窗口基本属性
this.setTitle("简单计算器");this.setSize(300, 200);//本机分辨率为1366*768
this.setLocation(1366/2-300/2, 768/2-200/2);//this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.addWindowListener(newWindowAdapter(){
@Overridepublic voidwindowClosing(WindowEvent e) {
setVisible (false);
System.exit(0);
}
});
initView();
initLayout();this.setVisible(true);//显示窗口
btnCalculate.addActionListener(newButtonListener());
}//设置一些功能区域
public voidinitView() {
textData1= newJTextField();
textData2= newJTextField();
textResult= newJTextField();
textResult.setEnabled(false);
labelNum1= new JLabel("第一个数:");
labelNum2= new JLabel("第二个数:");
labelResult= new JLabel("结果:");
btnCalculate= new JButton("计算");
radioAdd= new JRadioButton("+");
radioSub= new JRadioButton("-");
radioMul= new JRadioButton("*");
radioDiv= new JRadioButton("/");
}//将控件加入到布局中
public voidinitLayout() {
JPanel p1= new JPanel(new GridLayout(1,2));
p1.add(labelNum1);
p1.add(textData1);
JPanel p2= new JPanel(new GridLayout(1,4));
p2.add(radioAdd);
p2.add(radioSub);
p2.add(radioMul);
p2.add(radioDiv);
JPanel p3= new JPanel(new GridLayout(1,2));
p3.add(labelNum2);
p3.add(textData2);
JPanel p4= new JPanel(new GridLayout(1,2));
p4.add(labelResult);
p4.add(textResult);
JPanel p5= new JPanel(new GridLayout(1,1));
p5.add(btnCalculate);this.setLayout(new GridLayout(5,1));this.add(p1);this.add(p2);this.add(p3);this.add(p4);this.add(p5);
ButtonGroup group= newButtonGroup();
group.add(radioAdd);
group.add(radioSub);
group.add(radioMul);
group.add(radioDiv);
}class ButtonListener implementsActionListener{//从程序中读入数据
public voidactionPerformed(ActionEvent e) {
data1=textData1.getText();
data2=textData2.getText();
operation= "";if(radioAdd.isSelected()) operation =radioAdd.getText();else if(radioSub.isSelected()) operation =radioSub.getText();else if(radioMul.isSelected()) operation =radioMul.getText();else if(radioDiv.isSelected()) operation =radioDiv.getText();//将运算符号传入工厂中进行实例化
oper = OperationFactory.createOperate(operation.charAt(0));
oper.numberA=Double.parseDouble(data1);
oper.numberB=Double.parseDouble(data2);
resultNum=oper.getResult();
textResult.setText(String.valueOf(resultNum));
}
}
}