java - JButton listener not firing -


i seperated codes mvc model , confirm button action listener not printing username , password though added actionlistener it. please thanks.

codes

logindialog.java

import java.awt.borderlayout; import java.awt.flowlayout; import java.awt.gridbagconstraints; import java.awt.gridbaglayout; import java.awt.insets; import java.awt.event.actionlistener; import javax.swing.jbutton; import javax.swing.jdialog; import javax.swing.jlabel; import javax.swing.jpanel; import javax.swing.jpasswordfield; import javax.swing.jtextfield;  @suppresswarnings("serial") public class logindialog extends jdialog {      private jlabel namelabel;     private jlabel passwordlabel;     private jtextfield usernametf;     private jpasswordfield passwordtf;     private jbutton confirmbtn;     private jbutton cancelbtn;     private jpanel toppanel;     private jpanel buttonpanel;     private gridbagconstraints gbc;      public logindialog() {         this.settitle("authentication");          toppanel = new jpanel(new gridbaglayout());         buttonpanel = new jpanel(new flowlayout(flowlayout.center));         namelabel = new jlabel("name : ");         passwordlabel = new jlabel("password : ");         usernametf = new jtextfield();         passwordtf = new jpasswordfield();         confirmbtn = new jbutton("confirm");         cancelbtn = new jbutton("cancel");         buttonpanel.add(confirmbtn);         buttonpanel.add(cancelbtn);         gbc = new gridbagconstraints();          gbc.insets = new insets(4, 4, 4, 4);          gbc.gridx = 0;         gbc.gridy = 0;         gbc.weightx = 0;         toppanel.add(namelabel, gbc);          gbc.gridx = 1;         gbc.gridy = 0;         gbc.fill = gridbagconstraints.horizontal;         gbc.weightx = 1;         toppanel.add(usernametf, gbc);          gbc.gridx = 0;         gbc.gridy = 1;         gbc.fill = gridbagconstraints.none;         gbc.weightx = 0;         toppanel.add(passwordlabel, gbc);          gbc.fill = gridbagconstraints.horizontal;         gbc.gridx = 1;         gbc.gridy = 1;         gbc.weightx = 1;         toppanel.add(passwordtf, gbc);          this.add(toppanel);         this.add(buttonpanel, borderlayout.south);     }      public void showlogindialog() {         logindialog ld = new logindialog();         ld.setsize(400, 150);         ld.setvisible(true);         ld.setlocationrelativeto(null);     }      public string getusername() {         return usernametf.gettext();     }      public string getpassword() {         return new string(passwordtf.getpassword());     }      public void confirmbtnlistner(actionlistener listener) {         confirmbtn.addactionlistener(listener);     } } 

controller.java

import java.awt.event.actionevent; import java.awt.event.actionlistener;  public class controller {      private logindialog logindialog;      public controller(logindialog logindialog) {         this.logindialog = logindialog;         logindialog.showlogindialog();         logindialog.confirmbtnlistner(new btnlistener());     }      class btnlistener implements actionlistener {         @override         public void actionperformed(actionevent e) {             system.out.println(logindialog.getusername());             system.out.println(logindialog.getpassword());         }     }      public static void main(string[] args) {         logindialog logindialog = new logindialog();         new controller(logindialog);     } } 

you having 2 instances of logindialog class.

one creating in controller , other 1 in logindialog#showlogindialog() method.

let's list them:

1st instance - in controller class named `logindialog` 2nd instance - in `logindialog` class named `ld`   

here ld object created within logindialog object. 2 different jdialog objects. when call

logindialog.showlogindialog()   

another object ld created within method. jdialog refered set visible by:

ld.setvisible(true) 

so now,

object `ld` visible , object `logindialog` not yet visible havent done `logindialog.setvisible(true)` yet. 

now adding actionlistener button within logindialog object, not yet visible. while there no actionlistener added button within ld object.

final conclusion:

  1. object ld visible, button within has no actionlistener.
  2. object logindialog not yet visible. button within has actionlistener.
  3. the button clicking part of ld object has no action listener associated it.
  4. the button has actionlistener associated part of logindialog object not visible.

wanna check if right?

just add these lines in controller constructor:

logindialog.setvisible(true); logindialog.setsize(400, 150); logindialog.setlocationrelativeto(null);   

i won't give full solution don't spoonfeed here on stack overflow. it's challange adjust code accordingly. :)


Comments

Popular posts from this blog

javascript - Google App Script ContentService downloadAsFile not working -

javascript - Function overwritting -

php - Find a regex to take part of Email -