Skip to content

Instantly share code, notes, and snippets.

@mambax
Created March 13, 2015 07:04
Show Gist options
  • Save mambax/9ccb5b107a4feb577b73 to your computer and use it in GitHub Desktop.
Save mambax/9ccb5b107a4feb577b73 to your computer and use it in GitHub Desktop.
import javafx.scene.control.Label;
import javafx.event.EventHandler;
import javafx.scene.control.TextField;
import javafx.event.ActionEvent;
public class InputListener implements EventHandler<ActionEvent> {
private TextField tallfelt;
private String teksten;
private Label melding;
public InputListener(TextField tallfelt, String teksten, Label m) {
this.tallfelt = tallfelt;
this.teksten = teksten;
this.melding = m;
}
/*
* Metode for å lese innputverdien i tekstfeltet
* Kaster et unntak dersom stringen ikke kan gjøres om til et heltall
*/
public static int lesInnput(TextField tallfelt) throws Exception {
String tallfeltet = tallfelt.getText();
int verdi = 0;
try {
// Prøver å gjøre om til integer mellom 1 og 1000
verdi = Integer.parseInt(tallfeltet);
if ((verdi < 1) || (verdi > 1000)) {
throw new Exception();
}
} catch (Exception e) {
// Feilmeldingen som kommer hvis det ikke kan konverteres
System.out.println("Kunne ikke konvertere til heltall innenfor 1 og 1000.");
}
return verdi;
}
@Override
public void handle(ActionEvent event) {
int datamaskinensVerdi = Main.datamaskinensTall;
System.out.println("Maskinens verdi: " + datamaskinensVerdi);
int verdi = -1;
try {
if ((verdi > 1) || (verdi < 1000)) {
verdi = lesInnput(tallfelt);
System.out.println("Din verdi: " + verdi);
String storrelse = null;
if (verdi > datamaskinensVerdi) {
storrelse = "større";
} else if (verdi < datamaskinensVerdi) {
storrelse = "mindre";
} else if (verdi == datamaskinensVerdi) {
//Dialoger.showMessageDialog(null, "Du gjettet riktig etter " + " forsøk!");
//Didnt have your dialoger :P
System.out.println("Du gjettet riktig etter, forsok");
}
teksten = "Du fikk til på forsøk " + " å finne et tall som var " + storrelse + " enn datamaskinens tall";
melding.setText("THIS CHANGES THE LABEL");
}
} catch (Exception e) {
System.out.println("Input kan kun være tall mellom 1 og 1000.");
}
tallfelt.clear();
}
}
import javafx.application.Application;
import javafx.geometry.HPos;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.FlowPane;
import javafx.scene.layout.GridPane;
import javafx.scene.shape.Line;
/*
* Et GUI av et gjettespill der man skal gjette et generert heltall mellom 1 og 1000.
*
* Av Eirik Guldbrandsen - Mars 2015
* Stud: 227749, Elektro Y-vei
*/
public class Main extends Application {
// Oppretter variabler for bruk i koden
private Label tallEtikett;
private Label melding;
private TextField tallFelt;
private String teksten;
private Button bekreftKnap;
private int counter = 0;
// Genererer et tall mellom 1 og 1000
static int datamaskinensTall = (int) (1 + (Math.random()*1000));
@Override
public void start(Stage primaryStage) {
try {
// Lager GridPane og FlowPane, plasserer i center
GridPane grid = new GridPane();
FlowPane topFeltet = new FlowPane();
topFeltet.setAlignment(Pos.CENTER);
topFeltet.setColumnHalignment(HPos.CENTER);
// Lager innholdet i øverste pane i GridPane (det som blir i FlowPane).
tallEtikett = new Label("Gjett et tall mellom 1 og 1000: ");
tallFelt = new TextField();
tallFelt.setPrefColumnCount(10);
bekreftKnap = new Button("OK");
// Setter lytteren til OK-knappen og tekstfeltet
tallFelt.setOnAction(new InputListener(tallFelt, teksten, melding));
bekreftKnap.setOnAction(new InputListener(tallFelt, teksten, melding));
// Plasserer label og tallfelt i FlowPane
topFeltet.getChildren().add(tallEtikett);
topFeltet.getChildren().add(tallFelt);
// Lager tekstfeltet i midten og linjene som skiller
// http://stackoverflow.com/questions/5449673/how-to-implement-the-abstract-method-in-interface
// http://stackoverflow.com/questions/28967150/javafx-eventlistener-updating-a-variable-in-main
Line linje = new Line(0, 1, 400, 0);
Line linje2 = new Line(0, 1, 400, 0);
melding = new Label();
melding.setText("Dis work?" + teksten);
// Plasserer panelene/linjene/tekst og setter avstand
grid.add(topFeltet, 0, 0);
grid.add(linje, 0, 1);
grid.add(melding, 0, 2);
grid.add(linje2, 0, 3);
grid.add(bekreftKnap, 0, 4);
GridPane.setHalignment(melding, HPos.CENTER);
GridPane.setHalignment(bekreftKnap, HPos.CENTER);
grid.setVgap(5);
grid.setPadding(new Insets(5, 0, 5, 0));
System.out.println("Counter i main: " + this.counter);
// Setter scenen
Scene scene = new Scene(grid);
//scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.sizeToScene();
primaryStage.setTitle("Gjettespill");
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment