Java 类 扩展按钮点击时的抽象 类 动作

Java Classes that extend abstract classes action on button click

我试图找到一个 class 扩展 java 中的摘要 class 的示例,该示例旨在根据选择的单选按钮和单击的按钮执行操作。

说明:

创建交易表格来管理账户余额。

  1. 创建交易选项:

    存款增加余额 支票从余额中扣除 如果余额 > 检查然后从余额中减去支票 else 显示资金不足消息 从余额中减去服务费(10 美元) 从余额中减去服务费 ($10)

  2. 使用摘要Class事务创建classes:

    class 存款 class 服务费 class 检查 覆盖每个 class 中的抽象函数 calculateBalance() 以对余额执行适当的计算 在 class Check.calculateBalance()

  3. 中抛出异常

我要使用下面的摘要class:

public abstract class Transaction {

  /**
  The Transaction class simulates a bank account.
  */

  static final double SERVICE_CHARGE = 10.0;
  double transactionamount = 0.0;

  static double balance = 0.0; // Account balance
  static double totalDeposits = 0.0;
  static double totalChecks = 0.0;
  static double totalServiceCharges = 0.0;
  static int numberDeposits = 0;
  static int numberChecks = 0;
  static int numberServiceCharges = 0;

  public Transaction() {
    transactionamount = 0.0;
  }

  public Transaction(double amount) {
    this.transactionamount = amount;
  }

  public Transaction(String str) {
    transactionamount = Double.parseDouble(str);
  }

  public void deposit(double amount) {
    balance += amount;
  }

  public void deposit(String str) {
    balance += Double.parseDouble(str);
  }

  static public double getBalance() {
    return balance;
  }

  abstract void calculateBalance() throws Exception;

}

以下是我正在尝试开始工作的内容:

首先列出扩展交易class的class,我的例子是Checkclass。我正在尝试设置我的计算按钮和交易菜单选择,以根据单选按钮选择和文本字段数据传递信息。

package Assignment5;

public class Check extends Transaction {

 public double checksBalance(double check) // makes alterations to Transaction variables once information is passed from text field.
    {
  check = transactionamount;
  totalChecks = check + totalChecks; // increases total amount in checks.
  balance = check + totalDeposits - totalChecks - totalServiceCharges;
  return check;
  
  
    }
 public int checks() {
  return numberChecks++;  // increases number of checks written.
  }
 
 
 @Override
 void calculateBalance() throws Exception {
  // TODO Auto-generated method stub
  
 }
 
}

public class TypePanel extends JPanel
  {

      public String deposit, check, service; 
  
   JRadioButton depositButton;
   JRadioButton checkButton;
   JRadioButton serviceButton;
         ButtonGroup radioButtonGroup;

   public TypePanel()  //
   {

    setLayout(new GridLayout(3, 1));  // Panel Layout

    depositButton = new JRadioButton("Deposit", true);  // Radiobuttons listed here. 
          checkButton = new JRadioButton("Check");
          serviceButton = new JRadioButton("Service Charge");
          

          radioButtonGroup = new ButtonGroup();
    radioButtonGroup.add(depositButton);
          radioButtonGroup.add(checkButton);
          radioButtonGroup.add(serviceButton);

          

          add(depositButton);
    add(checkButton);
    add(serviceButton);
   }
   
   public void GetTotals() 
      {
    
         if (checkButton.isSelected())
      {
         
         Transaction.transactionamount = AmountPanel.amountEntered;
      }
      
   
  }


public class AmountPanel extends JPanel {
   public static Object amountEntered;
   public String amountInput;
   private JLabel amountLabel;
      private String defaultText;
      private JTextField amountTextField;
      

   public AmountPanel()
     {
      setLayout(new GridLayout(2, 1)); // Panel Layout.

      amountLabel = new JLabel("Enter Amount");

      amountTextField = new JTextField(6);

      defaultText = "0"; // Default value placed in textfields within this panel.

      amountTextField.setText(defaultText);

      add(amountLabel);
      add(amountTextField);
         }

     public double GetAmount()  
     {
   double amountEntered;

   amountInput = amountTextField.getText();
   amountEntered = Double.parseDouble(amountInput);



   return amountEntered;
  }
 }

我没有包含我的所有代码,但我正在尝试将文本字段中输入的金额输入到 Check class 中的方法中,这样它们将反过来影响变量在交易 class 中。不过,我认为我没有以最好的方式做到这一点。

任何 class 你为扩展事务而写的东西要么是抽象的,要么至少是实现 void calculateBalance() throws Exception; . "abstract" 的要点是实现在派生的 class 中通用的方法,然后在派生的 class 中实现不同的方法。它实际上与扩展任何其他 class 相同,除了如果您将抽象 class 扩展为非抽象 class,您必须实现任何抽象方法摘要 class.

如有必要,您可以通过简单地重新实现它们来替换一些其他函数,并且您可以通过添加 @Override 注释来强制它们在调用时使用扩展 class 的实现方法。

好读物:https://docs.oracle.com/javase/tutorial/java/IandI/abstract.html