Witam
Mam mały problem. Tworze w swojej grze Opcje. Chcę aby po kliknięciu na przycisk PL, Label został "odświeżony" i wyświetlał "Jezyk: Polski", jesli klikenimy ENG to analogia do tego z tym ze jezyk angielski.
Uzywam zmiennej current, która przy wciśnięciu przycisku określa mi jaki stan został przyjęty, jednak po wciśnięciu przycisków System.out drukuje: null a Label przyjmuje postać ENG.
Dodam, że kod jest oparty o biblioteki Slick, ale to nie powinno mieć znaczenia w zrozumieniu kodu.
package TLT;
import java.awt.Dimension;
import java.awt.Toolkit;
import org.lwjgl.input.Mouse;
import org.newdawn.slick.*;
import org.newdawn.slick.state.*;
import de.matthiasmann.twl.Button;
import de.matthiasmann.twl.Label;
public class Options extends BasicTWLGameState {
Image abstrct;
private GameContainer gc;
private Button btnBack, btnLngENG, btnLngPL;
private String languagePL;
private String languageENG;
private StateBasedGame sbg;
public String current = languageENG;
public Options(int state) {
}
public void init(GameContainer gc, StateBasedGame sbg)
throws SlickException {
this.gc = gc;
this.sbg = sbg;
abstrct = new Image("res/GFX/Interface/menuElements/abstract.png");
if (current == languageENG) {
current = "Language: English";
}
if (current == languagePL) {
current = "Jezyk: Polski";
}
}
public void render(GameContainer gc, StateBasedGame sbg, Graphics g)
throws SlickException {
// draw images
int w = gc.getWidth();
int h = gc.getHeight();
g.drawRect(0, 0, (w), (h));
g.fillRect(0, 0, (w), (h));
abstrct.draw(0, h / 2);
}
@Override
protected RootPane createRootPane() {
final RootPane rp = super.createRootPane();
int w = gc.getWidth();
int h = gc.getHeight();
rp.setTheme("options");
final Label lngLbl = new Label(current);
lngLbl.setSize(150, 60);
lngLbl.setPosition(w / 3- 350, h / 4 + 93);
btnBack = new Button("BACK TO MENU");
btnBack.addCallback(new Runnable() {
public void run() {
sbg.enterState(5);
}
});
rp.add(btnBack);
btnLngENG = new Button("ENG");
btnLngENG.addCallback(new Runnable() {
public void run() {
current = languageENG;
System.out.println(current);
rp.removeChild(lngLbl);
rp.add(lngLbl);
}
});
rp.add(btnLngENG);
btnLngPL = new Button("PL");
btnLngPL.addCallback(new Runnable() {
public void run() {
current = languagePL;
System.out.println(current);
rp.removeChild(lngLbl);
rp.add(lngLbl);
}
});
rp.add(btnLngPL);
return rp;
}
@Override
protected void layoutRootPane() {
int w = gc.getWidth();
int h = gc.getHeight();
btnLngENG.setSize(60, 60);
btnLngENG.setPosition(w / 3- 200, h / 4 + 58);
btnLngPL.setSize(60, 60);
btnLngPL.setPosition(w / 3 - 200, h / 4 + 128);
btnBack.setSize(200, 60);
btnBack.setPosition(w / 2 - 100, h / 2 + 298);
}
public void update(GameContainer gc, StateBasedGame sbg, int delta)
throws SlickException {
}
public int getID() {
return 4;
}
}