我一直试图找出如何将键盘命令添加到预先存在的javafx场景中,我似乎无法在任何地方找到答案。想要按下按键运行键盘方法。他就是我想要将键盘命令/控件添加到。
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 {
public void start(Stage primaryStage) {
try {
Parent root = FXMLLoader.load(getClass().getResource("/fxml/Main.fxml"));
Scene scene = new Scene(root,600,400);
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
primaryStage.setResizable(false);
primaryStage.setScene(scene);
primaryStage.setTitle("Keyboard test app");
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
public void key(){
}
}
这真的有帮助,谢谢。
答案 0 :(得分:1)
请仔细阅读文档,其中包含大量示例!
正如马特建议您必须仔细阅读 Handling JavaFX Events 部分。
如果您只是想寻找一个例子,那么您必须尝试 KeyboardExample
N.B。如果您在尝试实施时遇到问题,请发布您尝试过的代码!
答案 1 :(得分:1)
或者,您可以尝试JavaFX中的KeyCombination
。以下是KeyCombination
文档的链接:
KeyCombination
简单的例子如下:
@FXML
MenuItem menuItem;
menuItem.setAccelerator(new KeyCodeCombination(KeyCode.M, KeyCombination.CONTROL_DOWN));
我希望这会有所帮助。
答案 2 :(得分:0)
这就是键盘的工作方式。
https://wiki.openjdk.java.net/display/OpenJFX/Keyboard+Navigation
而且我认为你可能意味着一种叫做助记符的东西
http://docs.oracle.com/javase/8/javafx/api/javafx/scene/input/Mnemonic.html
答案 3 :(得分:0)
大约一个星期后我发现了!您需要添加textField并使用它来收集键盘数据。 这是代码:
主:
package application;
import java.io.IOException;
import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Group;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.input.KeyEvent;
import javafx.stage.Stage;
public class Main extends Application {
@FXML
TextField textBox;
public static void main(String[] args) {
Application.launch(args);
}
public void start(Stage primaryStage){
try {
Parent root = FXMLLoader.load(getClass().getResource("/fxml/Main.fxml"));
Scene scene = new Scene(root,600,400);
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
primaryStage.setResizable(false);
primaryStage.setScene(scene);
primaryStage.setTitle("Keyboard test app");
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
}
主要控制:
package application;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.input.KeyEvent;
import javafx.scene.shape.Polygon;
public class MainControl implements Initializable {
@FXML
Polygon player_ship;
@FXML
TextField textBox;
public void initialize(URL arg0, ResourceBundle arg1) {
textBox.setPromptText("Write here");
textBox.setOnKeyPressed(new EventHandler<KeyEvent>() {
public void handle(KeyEvent ke) {
System.out.println("Key Pressed: " + ke.getText());
}
});
textBox.setOnKeyReleased(new EventHandler<KeyEvent>() {
public void handle(KeyEvent ke) {
System.out.println("Key Released: " + ke.getText());
if(ke.getText().equalsIgnoreCase("b")){
System.out.println("Yay!");
//What you want the computer to do goes here!
}
}
});
}
} applictation.css可以是任何东西,main.fxml只需要一个文本字段,你想要启用键盘命令。此代码改编自:http://docs.oracle.com/javafx/2/events/convenience_methods.htm