package chapter65;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class TaxCal {
JFrame mFrame = new JFrame("个人所得税计算器");
JPanel mainPanel = new JPanel(new GridLayout(8, 1, 5, 5));
JPanel mJPanel1 = new JPanel(new FlowLayout(FlowLayout.LEFT));
JLabel mJLabel1 = new JLabel("本月工资(元):");
JTextField mTextField1 = new JTextField(20);
JPanel mJPanel2 = new JPanel(new FlowLayout(FlowLayout.LEFT));
JLabel mJLabel2 = new JLabel("五险一金扣除数(元):");
JTextField mTextField2 = new JTextField(20);
JPanel mJPanel3 = new JPanel(new FlowLayout(FlowLayout.LEFT));
JLabel mJLabel3 = new JLabel("专项扣除数(元):");
JTextField mTextField3 = new JTextField(20);
JPanel mJPanel4 = new JPanel(new FlowLayout(FlowLayout.LEFT));
JLabel mJLabel4 = new JLabel("个税起征点(元):");
JTextField mTextField4 = new JTextField(20);
JPanel mJPanel5 = new JPanel(new FlowLayout());
JButton mJButton1 = new JButton("计算个人所得税");
JButton mJButton2 = new JButton("重置");
JPanel mJPanel6 = new JPanel(new FlowLayout(FlowLayout.LEFT));
JLabel mJLabel6 = new JLabel("应纳税所得额(元):");
JTextField mTextField6 = new JTextField(20);
JPanel mJPanel7 = new JPanel(new FlowLayout(FlowLayout.LEFT));
JLabel mJLabel7 = new JLabel("应纳税金额(元):");
JTextField mTextField7 = new JTextField(20);
JPanel mJPanel8 = new JPanel(new FlowLayout(FlowLayout.LEFT));
JLabel mJLabel8 = new JLabel("本月税后收入(元):");
JTextField mTextField8 = new JTextField(20);
public TaxCal() {
mTextField4.setText("5000");
mTextField6.setEditable(false);
mTextField7.setEditable(false);
mTextField8.setEditable(false);
mJPanel1.add(mJLabel1);
mJPanel1.add(mTextField1);
mJPanel2.add(mJLabel2);
mJPanel2.add(mTextField2);
mJPanel3.add(mJLabel3);
mJPanel3.add(mTextField3);
mJPanel4.add(mJLabel4);
mJPanel4.add(mTextField4);
mJPanel5.add(mJButton1);
mJPanel5.add(mJButton2);
mJPanel6.add(mJLabel6);
mJPanel6.add(mTextField6);
mJPanel7.add(mJLabel7);
mJPanel7.add(mTextField7);
mJPanel8.add(mJLabel8);
mJPanel8.add(mTextField8);
mainPanel.add(mJPanel1);
mainPanel.add(mJPanel2);
mainPanel.add(mJPanel3);
mainPanel.add(mJPanel4);
mainPanel.add(mJPanel5);
mainPanel.add(mJPanel6);
mainPanel.add(mJPanel7);
mainPanel.add(mJPanel8);
mJButton1.addActionListener(new TaxActionListener());
mJButton2.addActionListener(e -> {
mTextField1.setText("");
mTextField2.setText("");
mTextField3.setText("");
mTextField4.setText("5000");
mTextField6.setText("");
mTextField7.setText("");
mTextField8.setText("");
});
mFrame.add(mainPanel);
mFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mFrame.pack();
mFrame.setLocationRelativeTo(null);
mFrame.setVisible(true);
}
class TaxActionListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
try {
double salary = Double.parseDouble(mTextField1.getText());
double insurance = Double.parseDouble(mTextField2.getText());
double specialDeduction = Double.parseDouble(mTextField3.getText());
double threshold = Double.parseDouble(mTextField4.getText());
double taxableIncome = salary - insurance - specialDeduction - threshold;
if (taxableIncome < 0) taxableIncome = 0;
mTextField6.setText(String.format("%.2f", taxableIncome));
double tax = 0;
if (taxableIncome > 960000) {
tax = taxableIncome * 0.45 - 181920;
} else if (taxableIncome > 660000) {
tax = taxableIncome * 0.35 - 85920;
} else if (taxableIncome > 420000) {
tax = taxableIncome * 0.30 - 52920;
} else if (taxableIncome > 300000) {
tax = taxableIncome * 0.25 - 31920;
} else if (taxableIncome > 144000) {
tax = taxableIncome * 0.20 - 16920;
} else if (taxableIncome > 36000) {
tax = taxableIncome * 0.10 - 2520;
} else if (taxableIncome > 0) {
tax = taxableIncome * 0.03;
}
mTextField7.setText(String.format("%.2f", tax));
double netIncome = salary - insurance - tax;
mTextField8.setText(String.format("%.2f", netIncome));
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(mFrame, "请输入有效的数字!", "错误", JOptionPane.ERROR_MESSAGE);
}
}
}
public static void main(String[] args) {
new TaxCal();
}
}