KeyListener JavaFX [英] KeyListener JavaFX
本文介绍了KeyListener JavaFX的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在互联网上看,但我找不到好的信息。每次应用程序运行时,我都会尝试检测按键。我正在使用JavaFX并使用FXML运行它。我尝试了很多东西但没有工作。请帮帮我。
I was looking on the internet but I didn't find good information for it. I'm trying to detect key presses every time the app is running. I'm using JavaFX and running it with FXML. I tryed a lot of thing but none work. Please help me.
推荐答案
你应该看看合奏样本。这是关键的监听器代码。
You should check out the Ensemble sample. Here's the key listener code.
/**
* Copyright (c) 2008, 2012 Oracle and/or its affiliates.
* All rights reserved. Use is subject to license terms.
*/
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.collections.FXCollections;
import javafx.collections.ListChangeListener;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Node;
import javafx.scene.control.ListView;
import javafx.scene.control.TextField;
import javafx.scene.effect.DropShadow;
import javafx.scene.effect.PerspectiveTransform;
import javafx.scene.input.KeyEvent;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
/**
* A sample that demonstrates various key events and their usage. Type in the
* text box to view the triggered events: key pressed, key typed and key
* released. Pressing the Shift, Ctrl, and Alt keys also trigger events.
*
* @see javafx.scene.input.KeyCode
* @see javafx.scene.input.KeyEvent
* @see javafx.event.EventHandler
*/
public class KeyEventsSample extends Application {
private void init(Stage primaryStage) {
Group root = new Group();
primaryStage.setScene(new Scene(root));
//create a console for logging key events
final ListView<String> console = new ListView<String>(FXCollections.<String>observableArrayList());
// listen on the console items and remove old ones when we get over 20 items in the list
console.getItems().addListener(new ListChangeListener<String>() {
@Override public void onChanged(Change<? extends String> change) {
while (change.next()) {
if (change.getList().size() > 20) change.getList().remove(0);
}
}
});
// create text box for typing in
final TextField textBox = new TextField();
textBox.setPromptText("Write here");
textBox.setStyle("-fx-font-size: 34;");
//add a key listeners
textBox.setOnKeyPressed(new EventHandler<KeyEvent>() {
public void handle(KeyEvent ke) {
console.getItems().add("Key Pressed: " + ke.getText());
}
});
textBox.setOnKeyReleased(new EventHandler<KeyEvent>() {
public void handle(KeyEvent ke) {
console.getItems().add("Key Released: " + ke.getText());
}
});
textBox.setOnKeyTyped(new EventHandler<KeyEvent>() {
public void handle(KeyEvent ke) {
String text = "Key Typed: " + ke.getCharacter();
if (ke.isAltDown()) {
text += " , alt down";
}
if (ke.isControlDown()) {
text += " , ctrl down";
}
if (ke.isMetaDown()) {
text += " , meta down";
}
if (ke.isShiftDown()) {
text += " , shift down";
}
console.getItems().add(text);
}
});
VBox vb = new VBox(10);
vb.getChildren().addAll(textBox, console);
root.getChildren().add(vb);
}
@Override public void start(Stage primaryStage) throws Exception {
init(primaryStage);
primaryStage.show();
}
public static void main(String[] args) { launch(args); }
}
这篇关于KeyListener JavaFX的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文