/****创建 BankAccount****/
public class BankAccount {
public double balance;
public BankAccount(double intbalance){
balance= intbalance;
}
public double deposit(double amt)
{
return balance+amt;
}
public void withdraw(double amt)
{
if(amt<=balance)
{
balance=balance-amt;
}
}
public double getBalance(){
return balance;
}
}/******************************/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class BankAccountFrame extends JFrame{
private JButton b;
private JButton b1;
private JLabel l;
private JLabel l1;
private JPanel p;
private JTextField tf;
BankAccount bank=new BankAccount(100);
public BankAccountFrame() {
createComponents();
setSize(100, 100);}
private void createComponents() {
b = new JButton("withdraw");
b1=new JButton("deposit");
l = new JLabel("amount");
l1=new JLabel("balance="+bank.getBalance());
p = new JPanel();
p.add(l);
p.add(tf);
p.add(b);
p.add(b1);
p.add(l1);
p.setBackground(Color.RED);
add(p, BorderLayout.NORTH);
b.addActionListener(new ClickListener());
}
class ClickListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (e.getSource() == b) {
if (!"".equals(tf.getText()))
{
double c=Integer.parseInt(tf.getText());
bank.withdraw(c);
}
}
if(e.getSource() == b1){
if (!"".equals(tf.getText()))
{
double c=Integer.parseInt(tf.getText());
bank.deposit(c);
}
}
这个是测试类,运行出错。该如何修改使之运行成功并得到正确结果
首先,你的代码ClickListener最后少了几个大括号,编译没通过,我加上了才行。
我调试通过了,分别贴一下把,首先是BankAccount.java,这里你的deposit方法写的有问题,你后面调用时会造成无法存入,我改了(看注释掉的部分是你原来代码)
/****创建 BankAccount****/然后是BankAccountFrame.java,这里面有几处问题:
1)你存入或取出时没有更新JLabel,我加上了l1.setText("balance="+String.valueOf(bank.getBalance())); 这句
2)你的两个按钮只有一个加了事件监听,我加上了
b1.addActionListener(new ClickListener()); 这句
3)代码最后缺了三个大括号,造成无法编译通过,我加上了,可能是你忘了拷贝。
最后是测试,BankAccountViewer.java,这里
我加上了frame.pack(),否则界面显示不全。
import javax.swing.JFrame;测试通过,存入和取出都能正常加减金额。