java - Why is my if/else statement always skipping to the else -
i have tried reading every way can think of , life of me can't figure out why if/else statement in actionlistener never evaluate if statement true. program meant open jframe 3 panels. 2 of them have 8 random buttons letters on them. when button clicked supposed if it's vowel or consonant. program evaluates button consonant. not seeing logical flow of info in program?
import java.awt.borderlayout; import java.awt.container; import java.awt.eventqueue; import javax.swing.jbutton; import javax.swing.jframe; import javax.swing.jlabel; import javax.swing.jpanel; import javax.swing.border.emptyborder; import java.awt.flowlayout; import javax.swing.boxlayout; import java.awt.gridlayout; import java.awt.event.actionevent; import java.awt.event.actionlistener; import java.util.arraylist; import java.util.random; public class jvowelconsenant extends jframe { private jpanel contentpane; arraylist list = new arraylist(0); /** * launch application. */ public static void main(string[] args) { try { jvowelconsenant frame = new jvowelconsenant(); frame.setvisible(true); } catch (exception e) { e.printstacktrace(); } } /** * create frame. */ public jvowelconsenant() { setdefaultcloseoperation(jframe.exit_on_close); setbounds(100, 100, 585, 371); contentpane = new jpanel(); contentpane.setborder(new emptyborder(5, 5, 5, 5)); setcontentpane(contentpane); contentpane.setlayout(new boxlayout(contentpane, boxlayout.x_axis)); jpanel panel = new jpanel(); contentpane.add(panel); panel.setlayout(new gridlayout(2, 2, 0, 0)); jpanel panel_1 = new jpanel(); contentpane.add(panel_1); panel_1.setlayout(new gridlayout(2, 2, 0, 0)); jpanel panel_2 = new jpanel(); contentpane.add(panel_2); panel_2.setlayout(new gridlayout(2, 2, 0, 0)); string[] alphabet = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"}; jbutton[] letters = new jbutton[26]; (int 0; i<8; i++) { random_letters(); } for(int i=0; i<26; ++i) { letters[i] = new jbutton(); letters[i].settext(alphabet[i]); letters[i].addactionlistener(new actionlistener() { public void actionperformed(actionevent arg0) { if(arg0.getsource().equals("a")||arg0.getsource().equals("e")|| arg0.getsource().equals("i")||arg0.getsource().equals("o")||arg0.getsource().equals("u")){ jlabel letter_identity = new jlabel("this letter vowel"); panel_2.removeall(); panel_2.add(letter_identity); panel_2.revalidate(); } else{ jlabel letter_identity = new jlabel("this letter consenant"); panel_2.removeall(); panel_2.add(letter_identity); panel_2.revalidate(); } } }); } for(int = 0; i<4;++i){ panel.add(letters[(int) list.get(i)]); panel_1.add(letters[(int) list.get(i+4)]); } } void random_letters(){ random random = new random(); int random_1 = random.nextint(26); int check_point =exclusion(random_1); while(check_point == 0){ random_1= random.nextint(26); check_point = exclusion(random_1); } } int exclusion(int x){ int marker = 0; if(!list.contains(x)){ list.add(x); marker = 1; } return marker; } }
arg0.getsource()
return reference object triggered event, in case, jbutton
.
instead, should able use actionevent#getactioncommand
instead.
string cmd = agr0.getactioncommmand(); //...
if you're using java 7+, may find easier use switch
statement...
switch (cmd) { case "a": case "e": case "i": case "o": case "u": // vowel break; default: // consenant break; }
see how write action listeners more details
Comments
Post a Comment