java图形界面编程---商品折扣金额计算

 我希望点击按钮能在弹出一个界面显示应付金额,但是点击按钮就报错,大佬们帮看看!

import com.sun.deploy.panel.RuleSetViewerDialog;
import javafx.scene.input.InputMethodTextRun;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import static javax.swing.JOptionPane.showMessageDialog;

public class MyFrame extends JFrame {

    public MyFrame() {
        initComponents();
    }
    private JTextField textField1;
    private void initComponents() {
        JLabel label1 = new JLabel();
        JTextField textField1 = new JTextField();
        JButton button1 = new JButton();
        
        setVisible(true);
        setTitle("消费金额");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocation(600,300);
        setSize(500, 400);
        Container contentPane = getContentPane();
        contentPane.setLayout(null);
        
        label1.setText("请输入金额");
        label1.setFont(label1.getFont().deriveFont(label1.getFont().getSize() + 7f));
        contentPane.add(label1);
        label1.setBounds(180, 40, 165, 55);
        contentPane.add(textField1);
        textField1.setBounds(130, 115, 285, 55);
        
        button1.setText("确定");
        button1.setFont(button1.getFont().deriveFont(button1.getFont().getSize() + 7f));
        button1.addActionListener(e -> button1ActionPerformed(e));
        contentPane.add(button1);
        button1.setBounds(170, 205, 200, 85);
        
    }
    private void button1ActionPerformed(ActionEvent e) {
        
        String s = textField1.getText();
        int N = Integer.parseInt(s);
        double sum = N;
        if(N < 500){
            showMessageDialog(this,"您需要支付的金额为:"+sum);
            System.out.printf("%.2f",sum);
            System.out.println();
        }else if(N < 1000){
            JOptionPane.showMessageDialog(this,"您需要支付的金额为:"+sum*0.95);
            System.out.printf("%.2f",sum*0.95);
            System.out.println();
        }else if(N < 1500){
            showMessageDialog(this,"您需要支付的金额为:"+sum*0.90);
            System.out.printf("%.2f",sum*0.90);
            System.out.println();
        }else if(N < 2500){
            showMessageDialog(this,"您需要支付的金额为:"+sum*0.85);
            System.out.printf("%.2f",sum*0.85);
            System.out.println();
        }else{
            showMessageDialog(this,"您需要支付的金额为:"+sum*0.80);
            System.out.printf("%.2f",sum*0.80);
            System.out.println();
        }
    }
    public static void main(String[] args) {
        new MyFrame();
        
    }
    
}

 

JTextField textField1 = new JTextField();

改为

textField1 = new JTextField();

 

这个代码有问题

button1.addActionListener(e -> button1ActionPerformed(e));

你都没有实现ActionListener接口,那里的按钮事件哦。

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import static javax.swing.JOptionPane.showMessageDialog;
public class MyFrame extends JFrame {
    public MyFrame() {
        initComponents();
    }
    private JTextField textField1;
    private void initComponents() {
        JLabel label1 = new JLabel();
        textField1 = new JTextField();
        JButton button1 = new JButton();
        setVisible(true);
        setTitle("消费金额");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocation(600,300);
        setSize(500, 400);
        Container contentPane = getContentPane();
        contentPane.setLayout(null);
        label1.setText("请输入金额");
        label1.setFont(label1.getFont().deriveFont(label1.getFont().getSize() + 7f));
        contentPane.add(label1);
        label1.setBounds(180, 40, 165, 55);
        contentPane.add(textField1);
        textField1.setBounds(130, 115, 285, 55);
        button1.setText("确定");
        button1.setFont(button1.getFont().deriveFont(button1.getFont().getSize() + 7f));
        button1.addActionListener(e -> button1ActionPerformed(e));
        contentPane.add(button1);
        button1.setBounds(170, 205, 200, 85);
    }
    private void button1ActionPerformed(ActionEvent e) {
        String s = textField1.getText();
        int N = Integer.parseInt(s);
        double sum = N;
        if(N < 500){
            showMessageDialog(this,"您需要支付的金额为:"+sum);
            System.out.printf("%.2f",sum);
            System.out.println();
        }else if(N < 1000){
            JOptionPane.showMessageDialog(this,"您需要支付的金额为:"+sum*0.95);
            System.out.printf("%.2f",sum*0.95);
            System.out.println();
        }else if(N < 1500){
            showMessageDialog(this,"您需要支付的金额为:"+sum*0.90);
            System.out.printf("%.2f",sum*0.90);
            System.out.println();
        }else if(N < 2500){
            showMessageDialog(this,"您需要支付的金额为:"+sum*0.85);
            System.out.printf("%.2f",sum*0.85);
            System.out.println();
        }else{
            showMessageDialog(this,"您需要支付的金额为:"+sum*0.80);
            System.out.printf("%.2f",sum*0.80);
            System.out.println();
        }
    }
    public static void main(String[] args) {
        new MyFrame();
    }
}

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632