无法从GUI变为主类

问题描述 投票:0回答:2

我试图使用getter来检索用户将输入到GUI中的一些变量,但是它给了我“无法从静态上下文引用的非静态方法”错误。我试过让我的getter和setter静态,但是没有用。我不知道从那里去哪里。这是我的代码:主要:

public class creditInfoSystem {
    String name = infoGUI.getName();

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

    public void getData() {     
    }
}

来自GUI类的Getters + Setters:

public void setName(String newName){  
    name = newName;    
}

public String getName(){
    return name;
}

public void setCustNum(double newCustNum){  
    custNum = newCustNum;
}

public double getCustNum(){
    return custNum;
}

public void setCreditLimit(double newCreditLimit){  
    creditLimit = newCreditLimit;
}

public double getCreditLimit(){
    return creditLimit;
}

public void setPrevBalance(double newPrevBalance){  
    prevBalance = newPrevBalance;
} 

public double getPrevBalance(){
    return prevBalance;
}

public void setCurrentPurchases(double newCurrentPurchases){  
    currentPurchases = newCurrentPurchases;
}

public double getCurrentPurchases(){
    return currentPurchases;
}

public void setPayments(double newPayments){  
    payments = newPayments; 
}

public double getPayments(){
    return payments;
}

public void setCreditsReturns(double newCreditsReturns){
    creditsReturns = newCreditsReturns;
}

public double getCreditsReturns(){
    return creditsReturns;
}

public void setLateFees(double newLateFees){
    lateFees = newLateFees;
}

public double getLateFees(){
    return lateFees;
}

如果需要,我可以提供更多代码部分。

java user-interface getter-setter
2个回答
0
投票

问题是creditInfoSystem类不知道你指的是哪个infoGUI类。尝试使infoGUI成为creditInfoSystem的参数并从那里检索数据。

public class creditInfoSystem {
    private InfoGUI infoGUI;

   public creditInfoSystem(InfoGUI gui){
    infoGUI = gui;
    name = infoGUI.getName();
  }

  public static void main(String[] args) {
    InfoGUI infoGUI = new infoGUI();
    CreditInfoSystem sys = new creditInfoSystem(infoGUI);

  }
}

如果您正在构建swing / FX GUI:

我可以预测的一个问题是知道GUI中的名称何时实际设置。你应该考虑将GUI作为主要程序,其中CreditInfoSystem是GUI的一个属性。然后,当单击按钮或其他操作时,GUI的输入将被传递并传递给CreditInfoSystem


0
投票

首先,重命名你的类qazxsw poi和qazxsw poi,从大写开始,它是一个Java约定。

然后,当你执行InfoGUI时,你试图访问一个必须是静态的类方法。你想要做的是创建一个InfoGUI实例并访问它的实例方法。

你的CreditInfoSystem变量也应该是静态的,因为你在静态方法中使用它,即InfoGUI.getName()

name

并重命名为public static void main类:

public class CreditInfoSystem {

   private static String name;

   public static void main(String[] args) {
      // Create an instance of your InfoGUI class
      InfoGUI infoGuiInstance = new InfoGUI();
      // Call the getter on the instance you just created
      name = infoGuiInstance.getName();
   }

}
© www.soinside.com 2019 - 2024. All rights reserved.