主要就是2.3.4问题的

1、设置窗口的标题为:商品总价计算

2、用户输入客户姓名、商品单价、商品数量后,点击“计算”按钮,把商品总价显示在文本框中。

3、如果用户没有输入客户姓名,弹出消息提示“客户姓名不能为空”。

4、如果用户在商品单价和商品数量文本框中,输入的不是数字,做异常处理,弹出消息提示“输入数据有误”。
界面代码:

import java.awt.GridLayout;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JTextField;

public class ExamGUI extends JFrame{

JTextField txtName; //txtName用于输入用户姓名

JTextField txtPrice; //txtPrice用于输入单价

JTextField txtNumber; //txtNumber用于输入数量

JTextField txtTotal; //txtTotal用于显示计算结果

JButton btnCal,btnSave; //btnCal用于计算总价,btnSave用于保存

public static void main(String[] args) {

new ExamGUI();

}

public ExamGUI()

{ this.setTitle("商品总价计算");

this.setSize(400, 300);

this.setResizable(false); //设置窗体不能改变大小

this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);

this.setLayout(new GridLayout(5,1));

JPanel p1 = new JPanel();

JLabel lblName = new JLabel("客户姓名:");

txtName = new JTextField(10);

p1.add(lblName);

p1.add(txtName);

JPanel p2 = new JPanel();

JLabel lblPrice = new JLabel("商品单价:");

txtPrice = new JTextField(10);

p2.add(lblPrice);

p2.add(txtPrice);

JPanel p3 = new JPanel();

JLabel lblNumber = new JLabel("商品数量:");

txtNumber = new JTextField(10);

p3.add(lblNumber);

p3.add(txtNumber);

JPanel p4 = new JPanel();

JLabel lblTotal = new JLabel("商品总价:");

txtTotal = new JTextField(10);

txtTotal.setEditable(false);

p4.add(lblTotal);

p4.add(txtTotal);

JPanel p5 = new JPanel();

btnCal=new JButton("计算");

btnSave=new JButton("保存");

p5.add(btnCal);

p5.add(btnSave);

this.add(p1);

this.add(p2);

this.add(p3);

this.add(p4);

this.add(p5);

this.setVisible(true);

}

}

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class ExamGUI extends JFrame {
    JTextField txtName; // txtName用于输入用户姓名

    JTextField txtPrice; // txtPrice用于输入单价

    JTextField txtNumber; // txtNumber用于输入数量

    JTextField txtTotal; // txtTotal用于显示计算结果

    JButton btnCal, btnSave; // btnCal用于计算总价,btnSave用于保存

    public static void main(String[] args) {
        new ExamGUI();

    }

    public ExamGUI()

    {
        this.setTitle("商品总价计算");

        this.setSize(400, 300);

        this.setResizable(false); // 设置窗体不能改变大小

        this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);

        this.setLayout(new GridLayout(5, 1));

        JPanel p1 = new JPanel();

        JLabel lblName = new JLabel("客户姓名:");

        txtName = new JTextField(10);

        p1.add(lblName);

        p1.add(txtName);

        JPanel p2 = new JPanel();

        JLabel lblPrice = new JLabel("商品单价:");

        txtPrice = new JTextField(10);
        txtPrice.addFocusListener(new FocusListener() {

            @Override
            public void focusLost(FocusEvent e) {
                try {
                    Integer.parseInt(txtPrice.getText());
                } catch (Exception e2) {
                    txtPrice.setText("");
                    JOptionPane.showMessageDialog(null, "输入数据有误");
                }

            }

            @Override
            public void focusGained(FocusEvent e) {
                // TODO Auto-generated method stub

            }
        });

        p2.add(lblPrice);

        p2.add(txtPrice);

        JPanel p3 = new JPanel();

        JLabel lblNumber = new JLabel("商品数量:");

        txtNumber = new JTextField(10);
        txtNumber.addFocusListener(new FocusListener() {

            @Override
            public void focusLost(FocusEvent e) {
                try {
                    Integer.parseInt(txtNumber.getText());
                } catch (Exception e2) {
                    txtNumber.setText("");
                    JOptionPane.showMessageDialog(null, "输入数据有误");
                }

            }

            @Override
            public void focusGained(FocusEvent e) {
                // TODO Auto-generated method stub

            }
        });
        p3.add(lblNumber);

        p3.add(txtNumber);

        JPanel p4 = new JPanel();

        JLabel lblTotal = new JLabel("商品总价:");
        txtTotal = new JTextField(10);

        txtTotal.setEditable(false);

        p4.add(lblTotal);

        p4.add(txtTotal);

        JPanel p5 = new JPanel();

        btnCal = new JButton("计算");
        btnCal.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                int price = Integer.parseInt(txtPrice.getText());
                int number = Integer.parseInt(txtNumber.getText());
                txtTotal.setText(price * number + "");
            }
        });

        btnSave = new JButton("保存");
        btnSave.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if (txtName.getText() == null || "".equals(txtName.getText())) {
                    JOptionPane.showMessageDialog(null, "客户姓名不能为空");
                }
            }
        });

        p5.add(btnCal);

        p5.add(btnSave);

        this.add(p1);

        this.add(p2);

        this.add(p3);

        this.add(p4);

        this.add(p5);

        this.setVisible(true);

    }

}