江江江江江边鸟 2021-07-08 11:28 采纳率: 100%
浏览 12
已结题

主要就是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);

}

}

  • 写回答

1条回答 默认 最新

  • 404警告 2021-07-08 12:53
    关注
    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);
    
        }
    
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月7日
  • 已采纳回答 7月30日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效