[英]Java FX Scene Builder How to make event key pressed
我是Java和Java FX的新手,我正在嘗試使用場景生成器制作一個帶有按鈕的面板。 我希望我的應用程序僅在按下箭頭鍵時做出響應。 我在Controller
類中做了以下方法:
public void keyPressed(KeyEvent key) {
switch(key.getCode()) {
...some code here
}
}
之后,我在場景生成器中選擇了此方法,但是當我運行我的應用程序時,按箭頭鍵沒有任何反應。 有人可以幫我嗎?
沒有看到其余的代碼和FXML,很難說,這里是完整的示例
您錯過的可能事情
碼
public class Main extends Application {
private class Controller {
@FXML // <== perhaps you had this missing??
void keyPressed(KeyEvent event) {
switch (event.getCode()) {
case LEFT:
case KP_LEFT:
System.out.println("to the left");
break;
case RIGHT:
case KP_RIGHT:
System.out.println("to the right");
break;
default:
break;
}
}
}
@Override
public void start(Stage primaryStage) throws Exception {
FXMLLoader loader = new FXMLLoader(getClass().getResource("/foo.fxml"));
loader.setController(new Controller());
primaryStage.setScene(new Scene(loader.load()));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
XML文件
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.RowConstraints?>
<GridPane onKeyPressed="#keyPressed" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<Button mnemonicParsing="false" text="Button" />
</children>
</GridPane>
KeyCode還允許與特定鍵進行比較
@FXML
private void keyPressed(KeyEvent keyEvent)
if (keyEvent.getCode() == KeyCode.ENTER) {
// do some actions
}
}
您可以從此處獲取所有關鍵代碼。 不使用開關是一種好方法。
KeyCode
具有isArrowKey()
方法,因此,如果您從事件處理程序中調用keyPressed
方法,則可以執行以下操作:
public void keyPressed(KeyEvent key){
if(key.getCode().isArrowKey()){
...some code here
}
}
如果需要根據按下的箭頭鍵做不同的事情,請確保將開關盒與KeyCode.UP
/ DOWN
/ LEFT
/ RIGHT
進行比較。 如果是這樣,則可能是由於線程問題導致您未正確設置事件處理程序或GUI掛起。 如果需要更多幫助,請張貼您在哪里處理活動。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.