package calculator;
import java.awt.*;
import strategy.Context;
import strategy.Mail;
import strategy.RegisterdMail;
import strategy.RegularMail;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class J_view extends JFrame implements ActionListener
{
JComboBox cb;
JButton b;
String d;
double a1,b1,c1;
JTextField [] t={new JTextField("重量:",3),new JTextField("",5),
new JTextField("距离:",3),new JTextField("",5),
new JTextField("金额:",3),new JTextField("",5),
new JTextField("邮资:",3),new JTextField("",5),};
public J_view()
{
super("邮资的计算");
Container c=getContentPane();
c.setLayout(new FlowLayout());
String [] s={"邮寄类型","RegularMail","RegisterdMail"};
cb=new JComboBox(s);
t[0].setEditable(false);//不可编辑
t[2].setEditable(false);
t[4].setEditable(false);
t[6].setEditable(false);
b=new JButton("计算");
b.addActionListener(this);
c.add(cb);
for(int i=0;i<6;i++)
{
c.add(t[i]);
}
c.add(b);
c.add(t[6]);
c.add(t[7]);
}
public void actionPerformed(ActionEvent e)
{
String a = t[1].getText();
//System.out.println(a);
String b = t[3].getText();
//System.out.println(b);
String c = t[5].getText();//获得输入的a、b、c
//System.out.println(c);
a1 = Double.parseDouble(a);
b1 = Double.parseDouble(b);
c1 = Double.parseDouble(c);//将string类型转化成double类型进行计算
Context mail=new Context();//实例上下文对象
String m="strategy."+cb.getSelectedItem().toString();
try
{
mail.setMail((Mail)Class.forName(m).newInstance());//根据获得的参数来实例化类
}
catch (InstantiationException | IllegalAccessException | ClassNotFoundException e1)
{
e1.printStackTrace();
}
double calculate= mail.getCalculate(a1, b1, c1);
String calculate1 = String.format("%.2f", calculate);//保留两位有效数字
t[7].setText(calculate1);
}
}