Java银行账户GUI

/****创建 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****/
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)代码最后缺了三个大括号,造成无法编译通过,我加上了,可能是你忘了拷贝。


/****创建 BankAccount****/
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();
}
}


测试通过,存入和取出都能正常加减金额。

温馨提示:答案为网友推荐,仅供参考