2016-05-29 111 views
1

無論何時按下SPACE鍵,它都會被註冊並作爲上次按下的(聚焦)按鈕進行處理。我無法將其捕獲爲KeyEvent,並且它充當按鈕。按鍵SPACE就像聚焦按鈕

我想生成並傳遞按鈕和鍵盤按鍵中的字符。

這裏是我的代碼在控制器類的處理器部分:

public void handleKeys(KeyEvent key) { 
    char chr = key.getText().charAt(0); 
    handleSymbols(chr); 
    key.consume(); 
} 

public void handleBtns(ActionEvent buttonPressed) { 
    char chr = buttonPressed.getSource().toString().toLowerCase().charAt(buttonPressed.getSource().toString().length() - 2); 
    handleSymbols(chr); 
    buttonPressed.consume(); 
} 

這裏是FXML文件開頭:

<?xml version="1.0" encoding="UTF-8"?> 

<?import javafx.geometry.*?> 
<?import javafx.scene.control.*?> 
<?import javafx.scene.layout.*?> 

<BorderPane fx:id="container" prefHeight="500.0" prefWidth="400.0" style="-fx-background-color: #00e600" 
     stylesheets="/sample/main.css" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" 
     fx:controller="sample.Controller" 
     onKeyPressed="#handleKeys"> 

<left> 
    <VBox prefHeight="300.0" prefWidth="50.0"> 
     <BorderPane.margin> 
      <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" /> 
     </BorderPane.margin> 

      <Button onAction="#handleBtns" prefHeight="135.0" prefWidth="50" text="+"> 
       <VBox.margin> 
        <Insets bottom="20.0" /> 
       </VBox.margin> 
      </Button> 
      <Button onAction="#handleBtns" prefHeight="135.0" prefWidth="50" text="-" /> 

    </VBox> 
</left> 

有類似的東西在這裏,但擺動,所以它不起作用:Disabling space bar triggering click for JButton

如何解除SPACE作爲焦點按鈕的默認鍵?我只是不想讓SPACE充當一個按鈕。

+0

@James_D,也許你知道該怎麼做呢? –

回答

2

我添加了一個eventFilter到舞臺的主類和它的作品

addEventFilter(KeyEvent.KEY_PRESSED, k -> { 
     if (k.getCode() == KeyCode.SPACE){ 
      k.consume(); 
     } 
    });