Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 朱布顿元';单击时无法计算_Java_Swing_User Interface_Jbutton - Fatal编程技术网

Java 朱布顿元';单击时无法计算

Java 朱布顿元';单击时无法计算,java,swing,user-interface,jbutton,Java,Swing,User Interface,Jbutton,我对这些GUI相关领域有点生疏。我的问题是,当我单击下面代码中提到的JButton时,它不会计算。我试了好几种方法,但没有成功 有人能给点建议吗 这是驱动程序: package project; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.TitledBorder; public class Driver extends JFrame{ priva

我对这些GUI相关领域有点生疏。我的问题是,当我单击下面代码中提到的JButton时,它不会计算。我试了好几种方法,但没有成功

有人能给点建议吗

这是驱动程序:

package project;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.TitledBorder;

public class Driver extends JFrame{
    private JTextField jtfDeposit = new JTextField("0.00");
    private JTextField jtfWithdraw = new JTextField("0.00");
    private JTextField jtfTransfer = new JTextField("0.00");
    private JTextField jtfCBalance = new JTextField("0.00");
    private JTextField jtfSBalance = new JTextField("0.00");

    private JButton jbtDeposit = new JButton("Deposit");
    private JButton jbtWithdraw = new JButton("Withdraw");
    private JButton jbtTransfer = new JButton("Transfer");

    String[] depositStrings = { "Checking", "Savings"};
    String[] withdrawStrings = { "Checking", "Savings"};
    String[] transferStrings = { "CHK* to SAVA*", "SAVA* to CHK*"};

    public Driver(){
        JPanel p1 = new JPanel(new GridLayout(3,4));
        p1.add(new JLabel("Deposit Into: "));
        p1.add(new JComboBox(depositStrings));
        p1.add(jtfDeposit);
        p1.add(jbtDeposit);

        p1.add(new JLabel("Withdraw From: "));
        p1.add(new JComboBox(withdrawStrings));
        p1.add(jtfWithdraw);
        p1.add(jbtWithdraw);

        p1.add(new JLabel("Transfer From: "));
        p1.add(new JComboBox(transferStrings));
        p1.add(jtfTransfer);
        p1.add(jbtTransfer);

        p1.setBorder(new TitledBorder("WELCOME TO THE BANK OF IS247"));

        JPanel p2 = new JPanel(new GridLayout(2,2));
        p2.add(new JLabel("Checking : "));
        p2.add(jtfCBalance);
        p2.add(new JLabel("Savings : "));
        p2.add(jtfSBalance);

        p2.setBorder(new TitledBorder("YOUR BALANCES"));

        add(p1, BorderLayout.CENTER);
        add(p2, BorderLayout.SOUTH);

        jbtDeposit.addActionListener(new ButtonListener());
        jbtWithdraw.addActionListener(new ButtonListener());
        jbtTransfer.addActionListener(new ButtonListener());
    }
    class ButtonListener implements ActionListener{
        Account cAcc = new CheckingAccount();
        Account sAcc = new SavingAccount();

        @Override
        public void actionPerformed(ActionEvent e){
            String actionCommand = e.getActionCommand();
            switch (actionCommand){
                case "Deposit":
                    if("Deposit".equals(depositStrings[0])){
                        function(1);
                        break;
                    }else if("Deposit".equals(depositStrings[1])){
                        function(2);
                        break;
                    }
                case "Withdraw":
                    if("Withdraw".equals(withdrawStrings[0])){
                        function(3);
                        break;
                    }else if("Withdraw".equals(withdrawStrings[1])){
                        function(4);
                        break;
                    }
                case "Transfer":
                    if("Transfer".equals(transferStrings[0])){
                        function(5);
                        break;
                    }else if("Transfer".equals(transferStrings[1])){
                        function(6);
                    }
            }
        }
        private void function(int num){
            double dAmount = new Double(jtfDeposit.getText().trim()).doubleValue();
            double wAmount = new Double(jtfWithdraw.getText().trim()).doubleValue();
            double tAmount = new Double(jtfTransfer.getText().trim()).doubleValue();
            double cAmount = cAcc.getBalance();
            double sAmount = sAcc.getBalance();

            switch (num){
                case 1:
                    cAmount = cAcc.getDeposit(dAmount);
                    break;
                case 2:
                    sAmount = sAcc.getDeposit(dAmount);
                    break;
                case 3:
                    cAmount = cAcc.getWithdrawal(wAmount);
                    break;
                case 4:
                    sAmount = sAcc.getWithdrawal(wAmount);
                    break;
                case 5:
                    cAmount = cAcc.getTransfer(tAmount);
                    sAmount = sAcc.getDeposit(tAmount);
                    break;
                case 6:
                    sAmount = sAcc.getTransfer(tAmount);
                    cAmount = cAcc.getDeposit(tAmount);
                    break;
            }
            jtfCBalance.setText(String.valueOf(cAmount));
            jtfSBalance.setText(String.valueOf(sAmount));
        }
    }
    public static void main(String[] args){
        Driver frame = new Driver();
        frame.setTitle("Bank of IS247");
        frame.setSize(500,200);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}
package project;

public abstract class Account{
    public abstract double getBalance();
    public abstract double getDeposit(double amount);
    public abstract double getWithdrawal(double amount);
    public abstract double getTransfer(double amount);
}
package project;

public class SavingAccount extends Account{
    double balance = 4500.00;
    double deposit;
    double withdrawal;
    double transfer;

    public SavingAccount(){
        //no-arg constructor
    }
    public SavingAccount(double balance, double deposit, double withdrawal,
            double transfer){
        this.balance = balance;
        this.deposit = deposit;
        this.withdrawal = withdrawal;
        this.transfer = transfer;
    }
    @Override
    public double getBalance(){
        return balance;
    }
    @Override
    public double getDeposit(double deposit){
        balance += deposit;
        return balance;
    }
    @Override
    public double getWithdrawal(double withdrawal){
        balance -= withdrawal;
        return balance;
    }
    @Override
    public double getTransfer(double transfer){
        balance = getWithdrawal(transfer);
        return balance;
    }
}
这是父类:

package project;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.TitledBorder;

public class Driver extends JFrame{
    private JTextField jtfDeposit = new JTextField("0.00");
    private JTextField jtfWithdraw = new JTextField("0.00");
    private JTextField jtfTransfer = new JTextField("0.00");
    private JTextField jtfCBalance = new JTextField("0.00");
    private JTextField jtfSBalance = new JTextField("0.00");

    private JButton jbtDeposit = new JButton("Deposit");
    private JButton jbtWithdraw = new JButton("Withdraw");
    private JButton jbtTransfer = new JButton("Transfer");

    String[] depositStrings = { "Checking", "Savings"};
    String[] withdrawStrings = { "Checking", "Savings"};
    String[] transferStrings = { "CHK* to SAVA*", "SAVA* to CHK*"};

    public Driver(){
        JPanel p1 = new JPanel(new GridLayout(3,4));
        p1.add(new JLabel("Deposit Into: "));
        p1.add(new JComboBox(depositStrings));
        p1.add(jtfDeposit);
        p1.add(jbtDeposit);

        p1.add(new JLabel("Withdraw From: "));
        p1.add(new JComboBox(withdrawStrings));
        p1.add(jtfWithdraw);
        p1.add(jbtWithdraw);

        p1.add(new JLabel("Transfer From: "));
        p1.add(new JComboBox(transferStrings));
        p1.add(jtfTransfer);
        p1.add(jbtTransfer);

        p1.setBorder(new TitledBorder("WELCOME TO THE BANK OF IS247"));

        JPanel p2 = new JPanel(new GridLayout(2,2));
        p2.add(new JLabel("Checking : "));
        p2.add(jtfCBalance);
        p2.add(new JLabel("Savings : "));
        p2.add(jtfSBalance);

        p2.setBorder(new TitledBorder("YOUR BALANCES"));

        add(p1, BorderLayout.CENTER);
        add(p2, BorderLayout.SOUTH);

        jbtDeposit.addActionListener(new ButtonListener());
        jbtWithdraw.addActionListener(new ButtonListener());
        jbtTransfer.addActionListener(new ButtonListener());
    }
    class ButtonListener implements ActionListener{
        Account cAcc = new CheckingAccount();
        Account sAcc = new SavingAccount();

        @Override
        public void actionPerformed(ActionEvent e){
            String actionCommand = e.getActionCommand();
            switch (actionCommand){
                case "Deposit":
                    if("Deposit".equals(depositStrings[0])){
                        function(1);
                        break;
                    }else if("Deposit".equals(depositStrings[1])){
                        function(2);
                        break;
                    }
                case "Withdraw":
                    if("Withdraw".equals(withdrawStrings[0])){
                        function(3);
                        break;
                    }else if("Withdraw".equals(withdrawStrings[1])){
                        function(4);
                        break;
                    }
                case "Transfer":
                    if("Transfer".equals(transferStrings[0])){
                        function(5);
                        break;
                    }else if("Transfer".equals(transferStrings[1])){
                        function(6);
                    }
            }
        }
        private void function(int num){
            double dAmount = new Double(jtfDeposit.getText().trim()).doubleValue();
            double wAmount = new Double(jtfWithdraw.getText().trim()).doubleValue();
            double tAmount = new Double(jtfTransfer.getText().trim()).doubleValue();
            double cAmount = cAcc.getBalance();
            double sAmount = sAcc.getBalance();

            switch (num){
                case 1:
                    cAmount = cAcc.getDeposit(dAmount);
                    break;
                case 2:
                    sAmount = sAcc.getDeposit(dAmount);
                    break;
                case 3:
                    cAmount = cAcc.getWithdrawal(wAmount);
                    break;
                case 4:
                    sAmount = sAcc.getWithdrawal(wAmount);
                    break;
                case 5:
                    cAmount = cAcc.getTransfer(tAmount);
                    sAmount = sAcc.getDeposit(tAmount);
                    break;
                case 6:
                    sAmount = sAcc.getTransfer(tAmount);
                    cAmount = cAcc.getDeposit(tAmount);
                    break;
            }
            jtfCBalance.setText(String.valueOf(cAmount));
            jtfSBalance.setText(String.valueOf(sAmount));
        }
    }
    public static void main(String[] args){
        Driver frame = new Driver();
        frame.setTitle("Bank of IS247");
        frame.setSize(500,200);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}
package project;

public abstract class Account{
    public abstract double getBalance();
    public abstract double getDeposit(double amount);
    public abstract double getWithdrawal(double amount);
    public abstract double getTransfer(double amount);
}
package project;

public class SavingAccount extends Account{
    double balance = 4500.00;
    double deposit;
    double withdrawal;
    double transfer;

    public SavingAccount(){
        //no-arg constructor
    }
    public SavingAccount(double balance, double deposit, double withdrawal,
            double transfer){
        this.balance = balance;
        this.deposit = deposit;
        this.withdrawal = withdrawal;
        this.transfer = transfer;
    }
    @Override
    public double getBalance(){
        return balance;
    }
    @Override
    public double getDeposit(double deposit){
        balance += deposit;
        return balance;
    }
    @Override
    public double getWithdrawal(double withdrawal){
        balance -= withdrawal;
        return balance;
    }
    @Override
    public double getTransfer(double transfer){
        balance = getWithdrawal(transfer);
        return balance;
    }
}
子类:

package project;

public class CheckingAccount extends Account{
    double balance = 1000.00;
    double deposit;
    double withdrawal;
    double transfer;

    public CheckingAccount(){
        //no-arg constructor
    }
    public CheckingAccount(double balance, double deposit, double withdrawal,
            double transfer){
        this.balance = balance;
        this.deposit = deposit;
        this.withdrawal = withdrawal;
        this.transfer = transfer;
    }
    @Override
    public double getBalance(){
        return balance;
    }
    @Override
    public double getDeposit(double deposit){
        balance += deposit;
        return balance;
    }
    @Override
    public double getWithdrawal(double withdrawal){
        balance -= withdrawal;
        return balance;
    }
    @Override
    public double getTransfer(double transfer){
        balance = getWithdrawal(transfer);
        return balance;
    }
}
子类:

package project;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.TitledBorder;

public class Driver extends JFrame{
    private JTextField jtfDeposit = new JTextField("0.00");
    private JTextField jtfWithdraw = new JTextField("0.00");
    private JTextField jtfTransfer = new JTextField("0.00");
    private JTextField jtfCBalance = new JTextField("0.00");
    private JTextField jtfSBalance = new JTextField("0.00");

    private JButton jbtDeposit = new JButton("Deposit");
    private JButton jbtWithdraw = new JButton("Withdraw");
    private JButton jbtTransfer = new JButton("Transfer");

    String[] depositStrings = { "Checking", "Savings"};
    String[] withdrawStrings = { "Checking", "Savings"};
    String[] transferStrings = { "CHK* to SAVA*", "SAVA* to CHK*"};

    public Driver(){
        JPanel p1 = new JPanel(new GridLayout(3,4));
        p1.add(new JLabel("Deposit Into: "));
        p1.add(new JComboBox(depositStrings));
        p1.add(jtfDeposit);
        p1.add(jbtDeposit);

        p1.add(new JLabel("Withdraw From: "));
        p1.add(new JComboBox(withdrawStrings));
        p1.add(jtfWithdraw);
        p1.add(jbtWithdraw);

        p1.add(new JLabel("Transfer From: "));
        p1.add(new JComboBox(transferStrings));
        p1.add(jtfTransfer);
        p1.add(jbtTransfer);

        p1.setBorder(new TitledBorder("WELCOME TO THE BANK OF IS247"));

        JPanel p2 = new JPanel(new GridLayout(2,2));
        p2.add(new JLabel("Checking : "));
        p2.add(jtfCBalance);
        p2.add(new JLabel("Savings : "));
        p2.add(jtfSBalance);

        p2.setBorder(new TitledBorder("YOUR BALANCES"));

        add(p1, BorderLayout.CENTER);
        add(p2, BorderLayout.SOUTH);

        jbtDeposit.addActionListener(new ButtonListener());
        jbtWithdraw.addActionListener(new ButtonListener());
        jbtTransfer.addActionListener(new ButtonListener());
    }
    class ButtonListener implements ActionListener{
        Account cAcc = new CheckingAccount();
        Account sAcc = new SavingAccount();

        @Override
        public void actionPerformed(ActionEvent e){
            String actionCommand = e.getActionCommand();
            switch (actionCommand){
                case "Deposit":
                    if("Deposit".equals(depositStrings[0])){
                        function(1);
                        break;
                    }else if("Deposit".equals(depositStrings[1])){
                        function(2);
                        break;
                    }
                case "Withdraw":
                    if("Withdraw".equals(withdrawStrings[0])){
                        function(3);
                        break;
                    }else if("Withdraw".equals(withdrawStrings[1])){
                        function(4);
                        break;
                    }
                case "Transfer":
                    if("Transfer".equals(transferStrings[0])){
                        function(5);
                        break;
                    }else if("Transfer".equals(transferStrings[1])){
                        function(6);
                    }
            }
        }
        private void function(int num){
            double dAmount = new Double(jtfDeposit.getText().trim()).doubleValue();
            double wAmount = new Double(jtfWithdraw.getText().trim()).doubleValue();
            double tAmount = new Double(jtfTransfer.getText().trim()).doubleValue();
            double cAmount = cAcc.getBalance();
            double sAmount = sAcc.getBalance();

            switch (num){
                case 1:
                    cAmount = cAcc.getDeposit(dAmount);
                    break;
                case 2:
                    sAmount = sAcc.getDeposit(dAmount);
                    break;
                case 3:
                    cAmount = cAcc.getWithdrawal(wAmount);
                    break;
                case 4:
                    sAmount = sAcc.getWithdrawal(wAmount);
                    break;
                case 5:
                    cAmount = cAcc.getTransfer(tAmount);
                    sAmount = sAcc.getDeposit(tAmount);
                    break;
                case 6:
                    sAmount = sAcc.getTransfer(tAmount);
                    cAmount = cAcc.getDeposit(tAmount);
                    break;
            }
            jtfCBalance.setText(String.valueOf(cAmount));
            jtfSBalance.setText(String.valueOf(sAmount));
        }
    }
    public static void main(String[] args){
        Driver frame = new Driver();
        frame.setTitle("Bank of IS247");
        frame.setSize(500,200);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}
package project;

public abstract class Account{
    public abstract double getBalance();
    public abstract double getDeposit(double amount);
    public abstract double getWithdrawal(double amount);
    public abstract double getTransfer(double amount);
}
package project;

public class SavingAccount extends Account{
    double balance = 4500.00;
    double deposit;
    double withdrawal;
    double transfer;

    public SavingAccount(){
        //no-arg constructor
    }
    public SavingAccount(double balance, double deposit, double withdrawal,
            double transfer){
        this.balance = balance;
        this.deposit = deposit;
        this.withdrawal = withdrawal;
        this.transfer = transfer;
    }
    @Override
    public double getBalance(){
        return balance;
    }
    @Override
    public double getDeposit(double deposit){
        balance += deposit;
        return balance;
    }
    @Override
    public double getWithdrawal(double withdrawal){
        balance -= withdrawal;
        return balance;
    }
    @Override
    public double getTransfer(double transfer){
        balance = getWithdrawal(transfer);
        return balance;
    }
}

您有一个逻辑错误,您将
DepositString
设置为
{“Checking”,“Savings”}
并且它们从未更改,但是您需要检查这些
String
是否匹配
Deposit

if ("Deposit".equals(depositStrings[0])) {
    function(1);
    break;
} else if ("Deposit".equals(depositStrings[1])) {
    function(2);
    break;
}

我认为它们应该与某种“账户”匹配。我还假设这是其他情况的问题…

有几个问题

  • 我添加了一个jtfCombo成员变量。您需要此引用,以便可以访问组合框中的值(选中、保存)
  • 在actionPerformed()中,应该使用jtfCombo获取selectedItem。然后您可以决定执行哪个函数
  • 你需要休息一下;声明作为您每个案例中的最后一个声明
  • 这是更新后的代码。我只更改了存款按钮。我没有检查你的计算结果,但它现在正在更新。查找/*新*/添加/更改:

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.border.TitledBorder;
    
    public class Driver extends JFrame{
        private JTextField jtfDeposit = new JTextField("0.00");
        private JTextField jtfWithdraw = new JTextField("0.00");
        private JTextField jtfTransfer = new JTextField("0.00");
        private JTextField jtfCBalance = new JTextField("0.00");
        private JTextField jtfSBalance = new JTextField("0.00");
        private JComboBox jtfCombo = null; /* NEW */
    
        private JButton jbtDeposit = new JButton("Deposit");
        private JButton jbtWithdraw = new JButton("Withdraw");
        private JButton jbtTransfer = new JButton("Transfer");
    
        String[] depositStrings = { "Checking", "Savings"};
        String[] withdrawStrings = { "Checking", "Savings"};
        String[] transferStrings = { "CHK* to SAVA*", "SAVA* to CHK*"};
    
        public Driver(){
            JPanel p1 = new JPanel(new GridLayout(3,4));
            p1.add(new JLabel("Deposit Into: "));
    
            jtfCombo = new JComboBox(depositStrings); /* NEW */
            p1.add(jtfCombo); /* NEW */
            p1.add(jtfDeposit);
            p1.add(jbtDeposit);
    
            p1.add(new JLabel("Withdraw From: "));
            p1.add(new JComboBox(withdrawStrings));
            p1.add(jtfWithdraw);
            p1.add(jbtWithdraw);
    
            p1.add(new JLabel("Transfer From: "));
            p1.add(new JComboBox(transferStrings));
            p1.add(jtfTransfer);
            p1.add(jbtTransfer);
    
            p1.setBorder(new TitledBorder("WELCOME TO THE BANK OF IS247"));
    
            JPanel p2 = new JPanel(new GridLayout(2,2));
            p2.add(new JLabel("Checking : "));
            p2.add(jtfCBalance);
            p2.add(new JLabel("Savings : "));
            p2.add(jtfSBalance);
    
            p2.setBorder(new TitledBorder("YOUR BALANCES"));
    
            add(p1, BorderLayout.CENTER);
            add(p2, BorderLayout.SOUTH);
    
            jbtDeposit.addActionListener(new ButtonListener());
            jbtWithdraw.addActionListener(new ButtonListener());
            jbtTransfer.addActionListener(new ButtonListener());
        }
        class ButtonListener implements ActionListener{
            Account cAcc = new CheckingAccount();
            Account sAcc = new SavingAccount();
    
            @Override
            public void actionPerformed(ActionEvent e){
                String actionCommand = e.getActionCommand();
                switch (actionCommand){
                case "Deposit":
                    if(jtfCombo.getSelectedItem().equals(depositStrings[0])){ /* NEW */
                        System.out.println("depositing to checking..."); /* NEW */
                        function(1);
                        break;
                    }else if(jtfCombo.getSelectedItem().equals(depositStrings[1])){
                        System.out.println("depositing to savings..."); /* NEW */
                        function(2);
                        break;
                    }
                    break; /* NEW */
                case "Withdraw":
                    if("Withdraw".equals(withdrawStrings[0])){
                        function(3);
                        break;
                    }else if("Withdraw".equals(withdrawStrings[1])){
                        function(4);
                        break;
                    }
                    break; /* NEW */
                case "Transfer":
                    if("Transfer".equals(transferStrings[0])){
                        function(5);
                        break;
                    }else if("Transfer".equals(transferStrings[1])){
                        function(6);
                    }
                    break; /* NEW */
                }
            }
            private void function(int num){
                double dAmount = new Double(jtfDeposit.getText().trim()).doubleValue();
                double wAmount = new Double(jtfWithdraw.getText().trim()).doubleValue();
                double tAmount = new Double(jtfTransfer.getText().trim()).doubleValue();
                double cAmount = cAcc.getBalance();
                double sAmount = sAcc.getBalance();
    
                switch (num){
                case 1:
                    cAmount = cAcc.getDeposit(dAmount);
                    break;
                case 2:
                    sAmount = sAcc.getDeposit(dAmount);
                    break;
                case 3:
                    cAmount = cAcc.getWithdrawal(wAmount);
                    break;
                case 4:
                    sAmount = sAcc.getWithdrawal(wAmount);
                    break;
                case 5:
                    cAmount = cAcc.getTransfer(tAmount);
                    sAmount = sAcc.getDeposit(tAmount);
                    break;
                case 6:
                    sAmount = sAcc.getTransfer(tAmount);
                    cAmount = cAcc.getDeposit(tAmount);
                    break;
                }
                jtfCBalance.setText(String.valueOf(cAmount));
                jtfSBalance.setText(String.valueOf(sAmount));
            }
        }
        public static void main(String[] args){
            Driver frame = new Driver();
            frame.setTitle("Bank of IS247");
            frame.setSize(500,200);
            frame.setLocationRelativeTo(null);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
        }
    }
    

    为了更快地获得更好的帮助,请发布一个(最小完整且可验证的示例)。“单击JButton时不会计算”在该源代码中声明的3个JButton中,您指的是哪个
    JButton
    ?不,再想想,发布一个只有一个按钮的MCVE。。