Neue Klasse InputDialogWorld

Diese Klasse soll ein Dialogfeld zur Abfrage eines Textes (bspw. eines Spielernamens) als Greenfoot World darstellen.
Da die Umsetzung zurzeit noch nicht funktioniert, ist diese Klasse noch nicht zu verwenden!
master
Zocker1999NET 8 years ago
parent 49e0cbef7f
commit 5620bff0a9

@ -0,0 +1,91 @@
import greenfoot.*;
import java.awt.Color;
/**
Erzeugt ein Eingabefeld, über welches man Strings vom Benutzer abfragen kann.
Die beim Erzeugen übergebene Welt wird nach dem "Schließen" des Eingabefelds wieder geladen.
@author Felix Stupp
@version 07/10/2016
*/
public class InputDialogWorld extends World implements ButtonEvent {
String PREINPUT = null;
Label msgL = new Label("",20);
Button okay = new Button("Weiter",20,this);
Button abort = new Button("Abbrechen",20,this);
Label inputL = new Label("",20);
String inputS = "";
Boolean closed = false;
/**
Erzeugt eine Instanz dieser Klasse, übergibt dieser die Parameter und wartet auf das Schließen des Dialogs.
@param msg Die für den Beutzer anzuzeigende Aufforderung.
@param preIn Ein Schattentext, welcher für den Benutzer in dem Textfeld sichtbar sein soll.
@param w Die Welt, die nach dem Beenden wieder eingesetzt werden soll.
*/
public static String showDialog(String msg, String preIn, World w) {
InputDialogWorld dialog = new InputDialogWorld(msg,preIn);
Greenfoot.setWorld(dialog);
// Unvollständig!
Greenfoot.setWorld(w);
return dialog.getInput();
}
/**
Erzeugt ein Eingabefeld, welches nach dem Laden dargestellt wird.
@param msg Die für den Beutzer anzuzeigende Aufforderung.
@param preIn Ein Schattentext, welcher für den Benutzer in dem Textfeld sichtbar sein soll.
*/
private InputDialogWorld(String msg, String preIn) {
super(500,200,1);
setBackground("backgroundLight.png");
PREINPUT = preIn;
addObject(msgL,10,10);
addObject(inputL,10,40);
addObject(abort,10,70);
addObject(okay,390,70);
msgL.setText(msg);
abort.setSize(100,30);
okay.setSize(100,30);
redraw();
Greenfoot.getKey();
}
public void act() {
String s = Greenfoot.getKey();
if(s == null) return;
if(s == "backspace" && inputS.length() > 0) {
inputS = inputS.substring(0,inputS.length() - 2);
} else if(s == "enter") {
buttonClicked(okay);
} else if(s.length() == 1) {
inputS += s;
}
}
public void buttonClicked(Button b) {
if(b == abort) {
inputS = null;
} else if(b == okay) {
inputS = null;
closed = true;
}
}
public Boolean ended() {
return closed;
}
public String getInput() {
return closed ? inputS : null;
}
private void redraw() {
inputL.setForeColor((inputS == "") ? Color.gray : Color.black );
inputL.setText((inputS == "") ? PREINPUT : inputS);
}
}
Loading…
Cancel
Save