0
我有JavaFX項目,在這個項目中,我必須聽鍵盤輸入,因爲我們的條形碼掃描器是這樣配置的。JavaFX:繼續收聽鍵盤輸入和開啓輸入執行動作
JavaFX中是否有任何庫可以讓偵聽器保持活動狀態,並在條碼掃描器接收字符串時執行適當的操作。
我在網上搜索,但不幸的是沒有找到任何好的解決方案。
這裏是我的代碼:
public class Main extends Application {
private Scene scene;
MyBrowser myBrowser;
@Override
public void start(Stage primaryStage) throws Exception{
primaryStage.setTitle("Our Application");
java.net.CookieManager manager = new java.net.CookieManager();
java.net.CookieHandler.setDefault(manager);
myBrowser = new MyBrowser();
scene = new Scene(myBrowser, 1080, 1920);
primaryStage.setScene(scene);
primaryStage.setFullScreen(true);
primaryStage.show();
// @ being the escape character
scene.setOnKeyTyped(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent event) {
String text = event.getCharacter();
if (text.equals("@")) {
String tempText = completeText;
completeText = "";
processText(tempText);
}else {
completeText = completeText+text;
}
}
});
}
private void processText(String text){
System.out.println("I will process "+text);
}
public static void main(String[] args) {
launch(args);
}
public class MyBrowser extends Region {
final String hellohtml = "index.html";
WebView webView = new WebView();
WebEngine webEngine = webView.getEngine();
public MyBrowser() {
webEngine.getLoadWorker().stateProperty().addListener((observable, oldValue, newValue) -> {
if (newValue == Worker.State.SUCCEEDED) {
JSObject window = (JSObject) webEngine.executeScript("window");
window.setMember("app", this);
}
});
URL urlHello = getClass().getResource(hellohtml);
webEngine.load(urlHello.toExternalForm());
webView.setPrefSize(1080, 1920);
webView.setContextMenuEnabled(false);
getChildren().add(webView);
}
請讓我知道。謝謝。
你是什麼意思「保持監聽活躍」?你的代碼中沒有監聽器,但是如果有的話,會導致它變爲不活動狀態? –
@James_D:因爲我無法找到這樣的事件的偵聽器,所有我能找到的是基本的Scanner類,它一直在等待Enter鍵。 –
您是否閱讀過任何[documentation](http://docs.oracle.com/javase/8/javafx/events-tutorial/convenience_methods.htm)?當然你只需要一個場景中的關鍵事件處理程序。 –