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();
}
}
测试通过,存入和取出都能正常加减金额。
我调试通过了,分别贴一下把,首先是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();
}
}
测试通过,存入和取出都能正常加减金额。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯