Ich bin gerade in der Schule, wo wir beauftragt wurden, eine Lösung zum Schreiben mit nur einem Knopf auf der Tastatur zu erfinden. Die Hauptaufgabe besteht darin, einen Bericht darüber zu schreiben, aber es erfordert auch, einen Prototyp zu erstellen. Dort stecke ich fest. Ich habe ein JavaFX mit allen Tasten von a-å (norwegische Buchstaben) gemacht, und der Plan ist, eine zufällige Taste auszuwählen (sagen Sie die g-Taste auf der Tastatur) und für jeden Push wird es zum nächsten Buchstaben bewegt. Mit einem Doppelklick auf den Button sollte der Brief in ein Textfeld gedruckt werden, und der nächste Klick geht zum nächsten Buchstaben in der Zeile. Auf diese Weise sollten Sie in der Lage sein, einfache Textnachrichten zu schreiben.Schreiben mit einem Knopf
Ich bin jetzt wirklich fest, wie man die "G-Taste" von den verschiedenen Tasten wechselt, und wie man es in das Textfeld ausdruckt. Auch ich bin ziemlich neu in der Programmierung und JavaFX und entschuldige mich für jede dumme Frage. Auch nicht sicher, ob JavaFX der einfachste Weg ist, dies zu tun, sondern es zu wählen, weil ich es am besten kenne.
Mein Code so weit: sample.fxml:
<GridPane fx:controller="sample.Controller"
xmlns:fx="http://javafx.com/fxml" alignment="center" hgap="10" vgap="10">
<TextField GridPane.columnIndex="1" GridPane.rowIndex="1"/>
<HBox spacing="10" alignment="bottom_right"
GridPane.columnIndex="1" GridPane.rowIndex="2">
<Button text="A" fx:id="pushed" onAction="#write"/>
<Button text="B" />
<Button text="C"/>
<Button text="D"/>
<Button text="E"/>
</HBox>
<HBox spacing="10" alignment="bottom_right"
GridPane.columnIndex="1" GridPane.rowIndex="3">
<Button text="F"/>
<Button text="G"/>
<Button text="H"/>
<Button text="I"/>
<Button text="J"/>
<Button text="K"/>
</HBox>
<HBox spacing="10" alignment="bottom_right"
GridPane.columnIndex="1" GridPane.rowIndex="4"></HBox>
<HBox spacing="10" alignment="bottom_right"
GridPane.columnIndex="1" GridPane.rowIndex="5">
<Button text="R"/>
<Button text="S"/>
<Button text="T"/>
<Button text="U"/>
<Button text="V"/>
<Button text="X"/>
</HBox>
<HBox spacing="10" alignment="bottom_right"
GridPane.columnIndex="1" GridPane.rowIndex="6">
<Button text="Y"/>
<Button text="Z"/>
<Button text="Æ"/>
<Button text="Ø"/>
<Button text="Å"/>
</HBox>
<HBox spacing="10" alignment="bottom_right"
GridPane.columnIndex="1" GridPane.rowIndex="7">
<Button text="Space"/>
<Button text="."/>
</HBox>
</GridPane>
Controller.java:
package sample;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
public class Controller {
public void write(ActionEvent event){
}
}
Main.java:
package sample;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
primaryStage.setTitle("Hello World");
primaryStage.setScene(new Scene(root, 300, 275));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Sie können Ihre Aufgabe sofort vereinfachen, indem Sie 'ToggleButton' anstelle von normalen verwenden. –
Als Tastatureingabe machen Sie 1 "any key" Taste, sagen Sie mit id "anykey", mit 'setOnMouseClicked' können Sie das MouseEvent bekommen und ist' getClickCount'. Jetzt können Sie doppelte Klicks erkennen. Die Tasten könnten als Ausgabe verwendet werden: welche Taste würde beim Doppelklick genommen werden. Umschaltknöpfe (oder sogar Radioknöpfe) könnten verwendet werden. –