import javafx.application.Application; import javafx.application.Platform; import javafx.stage.Stage; import javafx.scene.Scene; import javafx.scene.control.TextArea; import javafx.event.EventHandler; import javafx.scene.input.KeyEvent; import java.util.ArrayList; import java.util.Iterator; import java.util.Scanner; import java.io.File; import java.io.FileNotFoundException; import javafx.scene.layout.HBox; import javafx.stage.FileChooser; //Hint: For programmet med LeetCoder.java for fun times! public class LeetCoder extends Application { TextArea leetText = null; static ArrayList chunks = null; public void start (Stage stage) { FileChooser filvelger = new FileChooser(); File fil = filvelger.showOpenDialog(stage); chunks = new ArrayList<>(); //Les noe fra fil Scanner scanner = null; try { scanner = new Scanner(fil); while (scanner.hasNextLine()) { String[] linje = scanner.nextLine().split(" "); for (int i = 0; i < linje.length; i++) { chunks.add(linje[i]); } //"Hack" fordi newline fjernes n?r vi splitter p? mellomrom. chunks.add("\n"); } } catch (FileNotFoundException e) { //Fant ikke filen, lukker programmet Platform.exit(); } //Lag et tekstfelt leetText = new TextArea(); //Soerger for at feltet ikke redigerbart, men registrerer fortsatt knappetrykk! //Ellers hadde vi faatt med det siste tegnet vi skrev ogsaa, proev det gjerne ut. leetText.setEditable(false); //Soerger for at tekst kommer paa neste linje hvis den er for lang. leetText.setWrapText(true); leetText.setPrefSize(600, 400); //Legger til en lytter for tastetrykk TekstfeltLytter lytter = new TekstfeltLytter(); leetText.setOnKeyPressed(lytter); //Layout og visning HBox root = new HBox(); root.getChildren().add(leetText); Scene scene = new Scene(root); stage.setScene(scene); stage.setTitle("1337 Hacker"); stage.show(); } public class TekstfeltLytter implements EventHandler { String leetCode = ""; //Henter en iterator for aa telle oss gjennom ArrayListen Iterator listeIterator = chunks.iterator(); @Override public void handle(KeyEvent e) { //Henter tekst fra toppen av hvis vi har gaatt gjennom all teksten. if (! listeIterator.hasNext()) { listeIterator = chunks.iterator(); } //Oppdaterer teksten som skal inn i tekstfeltet og oppdaterer teksten leetCode = leetCode + " " + listeIterator.next(); leetText.setText(leetCode); leetText.setScrollTop(Double.MAX_VALUE); } } }