永发信息网

Java银行账户GUI

答案:1  悬赏:40  手机版
解决时间 2021-11-16 01:34
  • 提问者网友:雪舞兮
  • 2021-11-15 20:20
Java银行账户GUI
最佳答案
  • 五星知识达人网友:话散在刀尖上
  • 2021-11-15 20:46
首先,你的代码ClickListener最后少了几个大括号,编译没通过,我加上了才行。
我调试通过了,分别贴一下把,首先是BankAccount.java,这里你的deposit方法写的有问题,你后面调用时会造成无法存入,我改了(看注释掉的部分是你原来代码)

public class BankAccount {
 public double balance;
 public BankAccount(double intbalance){
 balance= intbalance;
  }
//   public double deposit(double amt) 
//  {
// return balance+amt;
//  }
public void deposit(double amt) 
{
 balance=balance+amt;
}
 public void withdraw(double amt)
 {
  if(amt<=balance)
  {
 balance=balance-amt;
  }
 }
 public double getBalance(){
 return balance;
 }
}

然后是BankAccountFrame.java,这里面有几处问题:

1)你存入或取出时没有更新JLabel,我加上了l1.setText("balance="+String.valueOf(bank.getBalance())); 这句
2)你的两个按钮只有一个加了事件监听,我加上了
b1.addActionListener(new ClickListener()); 这句
3)代码最后缺了三个大括号,造成无法编译通过,我加上了,可能是你忘了拷贝。



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=new JTextField(10);
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());
b1.addActionListener(new ClickListener());
}
class ClickListener implements ActionListener {    
public void actionPerformed(ActionEvent e) {
if (e.getSource().equals(b)) {
if (!"".equals(tf.getText())) 
{
double c=Integer.parseInt(tf.getText());
bank.withdraw(c);
}
}
if(e.getSource().equals(b1)){
if (!"".equals(tf.getText())) 
{
double c=Integer.parseInt(tf.getText());
bank.deposit(c);
}
}
l1.setText("balance="+String.valueOf(bank.getBalance()));
}
}
}

最后是测试,BankAccountViewer.java,这里
我加上了frame.pack(),否则界面显示不全。
import javax.swing.JFrame;
public class BankAccountViewer {
public static void main(String[] args) {
BankAccountFrame frame=new BankAccountFrame();
frame.setTitle("");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.pack();
}
}

测试通过,存入和取出都能正常加减金额。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯