java - Make button only visible when variable reaches certain value is not working -


im trying make cookie cliker "game" , current obstacle make button turns visible when have enough gold. code: (without start class)

import java.awt.color; import java.awt.component; import java.awt.font; import java.awt.event.actionevent; import java.awt.event.actionlistener; import java.util.scanner;  import javax.swing.icon; import javax.swing.imageicon; import javax.swing.jbutton; import javax.swing.jframe; import javax.swing.jlabel; import javax.swing.jpanel; import javax.swing.jtextfield; import javax.swing.swingconstants;  public class gui extends jframe implements actionlistener{     jframe jframe = new jframe();     private jbutton klick, upgrade1, miner1;     private jtextfield punkte;  static jlabel test;     private jlabel pickaxe;     private jlabel goldbarren;     private jlabel minerlbl1;     public static int minerkosten=200, pickaxekosten=50;     public static int klicks=0; //dies ist ihre punkzahl.     int k = 1; //diese variable gibt an, wieviel punkte sie pro klick erhalten.  {  }    public static class miner extends thread{     public void run() {         while (klicks<1000000000){             try{                 thread.sleep(1000);             } catch (exception e){                 system.err.println(e.getmessage());             }             klicks = klicks + 1;             test.settext("gold:" + " " + klicks);         }     } }  public gui(){     this.setsize(1650, 1080);     this.setextendedstate(jframe.maximized_both);      this.setundecorated(false);     this.setvisible(true);     this.setdefaultcloseoperation(jframe.exit_on_close);        klick = new jbutton(new imageicon("goldbarren.png")); //dies ist der button den sie drücken müssen um punkte zu erhalten.     klick.seticon(new javax.swing.imageicon(getclass().getresource("goldbarren.png")));     klick.setborderpainted(false);     klick.setfocuspainted(false);     klick.setcontentareafilled(false);     klick.setbounds(50, 50, 150, 150);        upgrade1 = new jbutton(new imageicon("pickaxe.png")); //dies ist der erste upgrade button     upgrade1.seticon(new javax.swing.imageicon(getclass().getresource("pickaxe.png")));     upgrade1.setborderpainted(false);     upgrade1.setfocuspainted(false);     upgrade1.setcontentareafilled(false);     upgrade1.setbounds(200, 200, 150, 150);     upgrade1.setvisible(true);       miner1 = new jbutton(new imageicon("images.jpg")); //dies ist das zweite upgrade, es sollte pro sekunde einen punkt geben.     miner1.seticon(new javax.swing.imageicon(getclass().getresource("images.jpg")));     miner1.setborderpainted(false);     miner1.setfocuspainted(false);     miner1.setcontentareafilled(false);     miner1.setbounds(500, 200, 150, 150);        minerlbl1= new jlabel("miner1"); //dies ist die beschriftung des zweiten upgrades.     minerlbl1= new jlabel("miner!");     minerlbl1.setbounds(10,10,10,10);     minerlbl1.setfont(new font("courier new", font.bold, 24));     minerlbl1.setforeground(color.blue);        pickaxe= new jlabel("pickaxe"); //dies ist die beschriftung des zweiten upgrades.     pickaxe = new jlabel("pickaxe");     pickaxe.setbounds(220, 250, 150, 150);     pickaxe.setfont(new font("courier new", font.bold, 24));     pickaxe.setforeground(color.blue);        test= new jlabel("klicks"); //dieses label gibt ihre anzahl punkte an.     test = new jlabel("points: "+klicks,             swingconstants.center);     test.setbounds(400, 10, 400, 50);     test.setfont(new font("courier new", font.bold, 24));     test.setforeground(color.blue);      goldbarren= new jlabel("goldbarren"); //dies ist die beschreibung des goldbarrens     goldbarren= new jlabel("mine!");     goldbarren.setbounds(90, 90, 150, 150);     goldbarren.setfont(new font("courier new", font.bold, 24));     goldbarren.setforeground(color.blue);               punkte = new jtextfield(""); //dies ist das textfield der punkte.     punkte.setbounds(1, 1, 1, 1);     punkte.setfont(new font("courier new", font.bold, 24));     punkte.setforeground(color.green);     punkte.setbackground(color.white);      //jframe.add(hoverbutton("hoverbutton"));         this.add(punkte); //dies sind die eingefügten dinge.     this.add(klick);     this.add(test);     this.add(miner1);     this.add(upgrade1);     this.add(pickaxe);     this.add(goldbarren);     this.add(minerlbl1);     this.setvisible(true);     //dies sind die actionlistener zu alllen buttons.     klick.addactionlistener(new actionlistener() {            public void actionperformed(actionevent ae){                klicks += k;                 test.settext("gold:" + " " + klicks);            }     });        upgrade1.addactionlistener(new actionlistener() {            public void actionperformed(actionevent ae){                  if (klicks >= 50) {                     upgrade1.setvisible(true);                 }                   klicks -= pickaxekosten;              test.settext("gold:" + " " + klicks);               k += 1;              pickaxekosten = pickaxekosten+4;          }          });      miner1.addactionlistener(new actionlistener() {            public void actionperformed(actionevent ae){                  if (klicks == 200) {                     miner1.setvisible(true);                  }                 klicks -= minerkosten;              test.settext("gold:" + " " + klicks);              new miner().start();              minerkosten = minerkosten+5;          }          });     }  private component hoverbutton(string string) {     // todo auto-generated method stub     return null; }  @override public void actionperformed(actionevent e) {     // todo auto-generated method stub  }  } 

so trying make button invisible , add this:

    if (klicks >= 50) {                     upgrade1.setvisible(true);                 } 

to make button visible player hits 50 "klicks" doing button never turns visible , isnt there.

so guys, can here? appreciated

just add component when condition reached. component added visible frame visible (the property controls hierarchy).

first don't add ui, remove line, component not visible:

this.add(upgrade1); 

modify callback button may increase gold, example:

klick.addactionlistener(new actionlistener() {      public void actionperformed(actionevent ae){        klicks += k;        test.settext("gold:" + " " + klicks);        if (klicks >= 10) {          gui.this.add(upgrade1);        }      }    }); 

be careful not make frame visible until every component have been added @ start, remove first call this.setvisible(true) @ beginning of constructor.

an alternative let component being visible make enable/disable when needed.


Comments

Popular posts from this blog

Is there a better way to structure post methods in Class Based Views -

performance - Why is XCHG reg, reg a 3 micro-op instruction on modern Intel architectures? -

jquery - Responsive Navbar with Sub Navbar -