swing - GUI Bank Account Java -
i'm having problems deposit , withdraw buttons. don't when click on them.
goal have user deposit , withdraw account.
sorry i'm new gui thing.
bankaccount file deposit , withdraw calculations
public class bankaccount { private double balance; public bankaccount() { balance = 0; } public bankaccount(double initialbalance) { balance = initialbalance; } public void deposit(double amount) { double newbalance = balance + amount; balance = newbalance; } public void withdraw(double amount) { double newbalance = balance - amount; balance = newbalance; } public double getbalance() { return balance; } }
i'm having trouble in file @ actionperformed method.
import java.awt.borderlayout; import java.awt.flowlayout; import java.awt.event.actionevent; import java.awt.event.actionlistener; import javax.swing.jbutton; import javax.swing.jlabel; import javax.swing.jpanel; import javax.swing.jtextfield; class accountpanel extends jpanel implements actionlistener { private jlabel amountlabel, resultlabel; private jtextfield amounttextfield; private jbutton depositbutton, withdrawbutton; private bankaccount account; double result; public accountpanel() { jpanel displaypanel = new jpanel(); displaypanel.setlayout(new flowlayout(flowlayout.left)); amountlabel = new jlabel("amount:"); displaypanel.add(amountlabel); amounttextfield = new jtextfield(13); displaypanel.add(amounttextfield); jpanel resultpanel = new jpanel(); resultpanel.setlayout(new flowlayout(flowlayout.left)); resultlabel = new jlabel("balance = "); resultpanel.add(resultlabel); //buttons jpanel buttonpanel = new jpanel(); buttonpanel.setlayout(new flowlayout(flowlayout.right)); // deposit button depositbutton = new jbutton("deposit"); buttonpanel.add(depositbutton); // withdraw withdrawbutton = new jbutton("withdraw"); buttonpanel.add(withdrawbutton); // add panels main panel this.setlayout(new borderlayout()); this.add(displaypanel, borderlayout.west); this.add(resultpanel, borderlayout.south); this.add(buttonpanel, borderlayout.east); } public void actionperformed(actionevent e) { object source = e.getsource(); if (source == depositbutton) { double dp = double.parsedouble(amounttextfield.gettext()); double dpamount = account.getbalance() + dp; account.deposit(dpamount); result = dpamount; resultlabel.settext("" + result); depositbutton.addactionlistener(this); } else if (source == withdrawbutton) { double wd = double.parsedouble(amounttextfield.gettext()); account.withdraw(wd); resultlabel.settext("" + result); withdrawbutton.addactionlistener(this); } } }
import java.awt.dimension; import java.awt.toolkit; import java.awt.window; import javax.swing.jframe; import javax.swing.jpanel; class accountframe extends jframe { private static final int frame_width = 400; private static final int frame_height = 100; public accountframe() { settitle("bank account"); setsize(frame_width, frame_height); centerwindow(this); setresizable(false); setdefaultcloseoperation(jframe.exit_on_close); jpanel panel = new accountpanel(); this.add(panel); } private void centerwindow(window w) { toolkit tk = toolkit.getdefaulttoolkit(); dimension d = tk.getscreensize(); setlocation((d.width-w.getwidth())/2, (d.height-w.getheight())/2); } }
import javax.swing.*; public class account{ public static void main(string[] args) { jframe frame = new accountframe(); frame.setvisible(true); } }
try doing instead of using single actionperformed()
method:
register event handler first (you missed step):
depositbutton.addactionlistener(new actionlistener() { public void actionperformed(actionevent evt) { handledepositbuttonevent(evt); } });
implement custom event handler event:
private void handledepositbuttonevent(actionevent evt){ double dp = double.parsedouble(amounttextfield.gettext()); double dpamount = account.getbalance() + dp; account.deposit(dpamount); result = dpamount; resultlabel.settext("" + result); }
do each button , component generating events want capture; separate action methods easier read , maintain.
by way, don't add action listener in action listener! makes no sense, , won't work anyway.
if (source == depositbutton) { double dp = double.parsedouble(amounttextfield.gettext()); ... depositbutton.addactionlistener(this); //<--- don't }
Comments
Post a Comment