永发信息网

Java银行账户GUI

答案:1  悬赏:40  手机版
解决时间 2021-11-16 01:34
Java银行账户GUI
最佳答案
首先,你的代码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();
}
}

测试通过,存入和取出都能正常加减金额。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
广州黄埔区云浦一路越秀保划爱特城禁行货车吗
合肥地铁起止点是哪里
C#谁能帮我解释一下,下面的代码?
婺源到乌镇怎么坐车
我的电脑属性显示: 安装内存(RAM): 4.00GB
惠普星15玩大型网游卡吗像GTA5 绝地求生 战地
有1987年和1983年结为夫妻的吗?
腻子必须用防水的吗?界面剂必须用吗?怎么施工
花菇和香菇有什么区别 花菇和香菇哪个贵
眼睛球上面有一块白色东西是什么】
花呗风控了, 来个能套的,点位太高就算了、
(a-7)=b+7a+5=b-5怎么算啊
与”蔷薇带刺攀应懒,菡萏生泥玩亦难”同义的
大便全是一小坨一小坨的是怎么回事
双流县参加初中摇号的条件
推荐资讯
安阳柏庄镇的内衣主要是加工儿童内衣还是女性
和信贷的信贷风险能力怎么样?
瘦脸针今天第六天怎么感觉脸酸酸的
某次数学竞赛共有五道题(满分不是100分),
最近闹游戏荒,推荐几个呗本人安卓
如何查询植妍诗洗发水真伪?
昨天晚上妈妈(后妈)喝醉了,她回到家拼命的抱
linux中 我给一个目录 组 写权限了 还是不能
糖蜜和老蜜蜡的区别
中国有没有普及高中?
油耗6.7L/100KM92油价在7.6元 请问一公里
家装公司怎么二次邀约客户?我们公司主要是做
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?