Created
March 13, 2015 07:04
-
-
Save mambax/9ccb5b107a4feb577b73 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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(); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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