无法从GUI变为主类
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法从GUI变为主类相关的知识,希望对你有一定的参考价值。
我试图使用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;
}
如果需要,我可以提供更多代码部分。
答案
问题是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
。
另一答案
首先,重命名你的类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();
}
}
以上是关于无法从GUI变为主类的主要内容,如果未能解决你的问题,请参考以下文章