我尝试创建一个程序,该程序将从JTextField获取用户输入,并在单击JButton后将该输入添加到类CurrentAccount的对象中。到目前为止,我已经能够提出这个代码;
jButton1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e)
{
//Execute when button is pressed
String currentValue = jTextField1.getText() ;
int val = Integer.parseInt(currentValue);
balance = val;
theAccount = new CurrentAccount(balance);
System.out.println(theAccount.myBalance);
}
});
但我收到的行是theAccount = new CurrentAccount(余额)。此外,我已经在方法之外实例化了帐户,因为我将需要它作为类SavingsAccount的对象,因为它是从这些继承的抽象类帐户。
如果有帮助,我的CurrentAccount代码如下;
public class CurrentAccount extends Account
{
private int myBalance;
private final ControlPanel myPane;
private int balance;
public CurrentAccount(ControlPanel myPane)
{
// balance= myBalance;
myBalance = myPane.getDimension();
this.myPane=myPane;
// //super(balance);
//if (100 >= myPane) throw new IllegalArgumentException
//("A Savings Account can not have a balance of less than £100, you entered" + balance);
}
对此的任何帮助都将非常感激。
答案 0 :(得分:1)
您遇到此问题和此代码时遇到了几个问题。首先,您的编译错误消息已声明:
“不兼容的类型:int无法转换为ControlPanel”
此错误消息隐藏在评论中,不属于您的主要问题,因此很多人很难看到。请避免将来这样做,而是将其作为问题的重要部分。
错误消息告诉您到底出了什么问题 - 您正在尝试创建一个新的CurrentAccount对象,但是将int传递给它的构造函数:
theAccount = new CurrentAccount(balance);
但是构造函数已被定义为不接受int,而是接受ControlPanel对象:
public CurrentAccount(ControlPanel myPane) {
通常我会说,您需要更改构造函数以获取int,或者更改您调用它的方式,以便您只传入ControlPanel参数 - 无论哪个最有意义。但我不认为 在这里是合适的。我猜测(我们不能肯定地说,因为我们对你的整体程序结构还不够了解)一个CurrentAccount实例已经存在,而不是从头开始创建一个新的,你要去想要将余额信息传递到此实例中,可能使用setBalance(int balance)
方法(如果存在)。
有关更好和更详细的答案,请告诉我们有关您的计划结构和问题的更多信息。