Ich schreibe ein Text-basierte Abenteuer-Spiel und ich lief in ein Problem. Ich portiere es von Terminal zu JFrame GUI und ich brauche es auf Benutzereingaben warten, bevor Sie fortfahren. Ich habe ein System mit einer booleschen Variablen namens buttonPressed eingerichtet, die als falsch beginnt. Wenn die Schaltfläche "Senden" gedrückt wird, wird sie auf "wahr" gesetzt. Es gibt eine while-Schleife, die darauf wartet, dass die Schaltfläche wahr wird, bevor sie dem Programm erlaubt, fortzufahren, wobei das Programm im Wesentlichen angehalten wird, bis der Benutzer die Eingabe vornimmt. Das Problem ist, das funktioniert nur, wenn ich in der while-Schleife eine system.out.println-Zeile geschrieben habe. Sonst geht es nicht weiter, nachdem ich auf die Schaltfläche geklickt habe. Was ist das Problem?Java-Programm stecken in während Schleife
public class event implements ActionListener{
public void actionPerformed(ActionEvent e){
moves += 1;
movesLabel.setText("Moves: " + moves);
buttonPressed = true;
try{
input = (String)(textfield.getText());
textfield.setText("");
}catch(Exception ex){
textfield.setText("Error");
}
}
}
public static void main (String args[]) {
Main gui = new Main();
gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gui.setVisible(true);
gui.setSize(650, 350);
gui.setTitle("Sprinkles Text Adventure");
setInventory();
textArea.setText(textDisplay("Welcome Adventurer!"));
textArea.setText(textDisplay("What is thy name: "));
while(!buttonPressed){
// this only works when I have system.out.println("something") written in
}
buttonPressed = false;
textArea.setText(textDisplay(input));
if ("alice".equals(input)||"Alice".equals(input)){
textArea.setText(textDisplay("Stop toking the magical pipe, "));
textArea.setText(textDisplay("you aren't alice and this isn't wonderland"));
textArea.setText(textDisplay("Now down the rabbit hole you go!"));
}
else if ("l3ikezI".equals(input)||"l3ikezi".equals(input)){
System.out.println("Magic and Technology flows through your veins");
System.out.println("Welcome back, Master");
for(int j = 0; j<14; j++){
Chest[j]=1;
}
}
else{
System.out.println("Enter " + input + " and good luck!\n\n");
}
Haben Sie 'Button definiert '? – Nick
ja, oben initialisiere ich es mit privaten statischen boolean buttonPressed = false; Es ist komisch, weil es funktioniert, wenn ich diese Codezeile in –
habe Dann würde ich vermuten, dass die JVM leere Endlosschleifen überspringt. Vielleicht könntest du Thread.sleep (15) benutzen? – Demurgos