import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.text.DecimalFormat; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; /** * 图形化界面的个人计算器 * @author 码农小江 * PersonalFax.java * 2012-8-8下午11:29:25 */ public class PersonalFax extends JFrame implements ActionListener{ JPanel panel1,panel2; JButton button; JTextField textField1,textField2,textField3; /** * 构造函数初始化完成各种组件 */ public PersonalFax(){ textField1 = new JTextField(); textField2 = new JTextField(); textField3 = new JTextField(); button = new JButton("初始化带字符串的按钮"); panel1 = new JPanel(); panel2 = new JPanel(); panel1.setLayout(new GridLayout(3,2)); panel2.setLayout(new FlowLayout()); panel1.add(new JLabel("居民收入:")); panel1.add(textField1); panel1.add(new JLabel("扣除个人所得税金额:")); panel1.add(textField2); panel1.add(new JLabel("税后收入:")); panel1.add(textField3); panel2.add(button); add(panel1,BorderLayout.CENTER); add(panel2,BorderLayout.SOUTH); button.addActionListener(this); setSize(400,300); setVisible(true); setAlwaysOnTop(true); setTitle("个人计算器图形版"); } @Override public void actionPerformed(ActionEvent e) { double n1, s1=1, s2=1; DecimalFormat format = new DecimalFormat("0.00");//精确到小数点后两位 n1 = Double.parseDouble(textField1.getText());//获得用户输入 if(n1>=0 && n1 <=1500){ s1=n1*0; } if(n1>=1500 && n1<=3000){ s1=n1*0.05; } if(n1>=3000){ s1=3000*0.1; } s2 = n1-s1; textField2.setText("个人所得税是:"+format.format(s1));//显示结果 textField3.setText("税后收入是:"+format.format(s2)); } public static void main(String args[]){ new PersonalFax(); /** * 这儿直接初始化,相当于调用了构造函数,而构造函数里边初始化了好多的组件; * 相当于继承自JFrame,然后往里边添加了两个面板。面板一上显示标签和数据。 * 面板而上显示按钮,在按钮上设置监听。这儿并不需要像android代码一样的addActionListen() * 因为实现了某个接口。然后还要实现该接口中的方法。监听方法对于这个类的实例化对象都成立。不需要额外的添加 * */ } }