2017-04-14 15 views
0

私はJava FXMLで電卓アプリケーションを構築しています。マウスのクリック以外の機能を追加するには、キーボードのキー機能を追加して、キーボードの数字や文字を入力して計算機の画面に表示させることができます。私は+記号を得るために、MacBookProを使用しています。私はキーの組み合わせのCMDと+キーを押す必要があります。私は以下の方法で試しましたが、うまくいきません。 エスケープバックスペースのキーはうまくいきます。でも、私はちょうどのバックスラッシュのマイナスのキーをチェックしようとしましたが、まだ動作していません。 (Main.java、Controller.javaとFXMLDocument.fxmlを含ん)Java FXMLのキーの組み合わせの例が必要

誰もが唯一で働いキーの組み合わせを作成する方法を手伝ってくれるのJavaはFXML

public class FXML_MainController implements Initializable { 

KeyCombination plus = new KeyCodeCombination(KeyCode.PLUS, KeyCombination.SHORTCUT_DOWN); 

@FXML 
private Label displayTextBottom; 

@FXML 
void btnOnKeyPressed(KeyEvent event) { 
    if (plus.match(event)) { 
     displayTextBottom.setText(event.getText()); 
     System.out.println("+ pressed"); 
     event.consume(); 
    } 

    switch (event.getCode()) { 
     case SLASH: 
      displayTextBottom.setText(event.getText()); 
      break; 
     case MINUS: 
      displayTextBottom.setText(event.getText()); 
      break; 
     case ESCAPE: 
      displayTextBottom.setText(""); 
      break; 
     case BACK_SPACE: 
      if (displayTextBottom.getText().length() > 0) { 
       StringBuilder removing = new StringBuilder(displayTextBottom.getText()); 
       removing.deleteCharAt(displayTextBottom.getText().length() - 1); 
       String removed = removing.toString(); 
       displayTextBottom.setText(removed); 
       setDisplayFontSizeBottom(); 
      } 
      break; 

     default: 
      System.out.println("error"); 
    } 
} 
+0

誰がfxmlで 'btnOnKeyPressed'ですか? – Elltz

+0

... onKeyPressed = "#btnOnKeyPressed" .... – Ahmadali

答えて

1

分割するSLASHを交換し、 MINUSからSUBTRACTに変更し、この方法でコードを変更して今すぐ試してください。

public class FXML_MainController implements Initializable { 

     @FXML 
     private Label displayTextBottom; 

     final KeyCombination keyShiftPlus = new KeyCodeCombination(KeyCode.EQUALS, KeyCombination.SHIFT_ANY); 
     final KeyCombination keyShiftMul = new KeyCodeCombination(KeyCode.DIGIT8, KeyCombination.SHIFT_ANY); 
     final KeyCombination keyShiftDiv = new KeyCodeCombination(KeyCode.SLASH, KeyCombination.SHIFT_ANY); 

    @FXML 
    void btnOnKeyPressed(KeyEvent event) { 

      if (keyShiftPlus.match(event) || event.getCode() == KeyCode.ADD) { 
       field.setText("+"); 
       System.out.println("+ ADD"); 
       event.consume(); 
      } 
      if (keyShiftMul.match(event) || event.getCode() == KeyCode.MULTIPLY) { 
       field.setText("*"); 
       System.out.println("* Mul"); 
       event.consume(); 
      } 
      if (keyShiftDiv.match(event) || event.getCode() == KeyCode.DIVIDE) { 
       field.setText("/"); 
       System.out.println("/ Div"); 
       event.consume(); 
      } 
      if (event.getCode() == KeyCode.MINUS || event.getCode() == KeyCode.SUBTRACT) { 
       field.setText("-"); 
       System.out.println("- Minus"); 
      } 

     switch (event.getCode()) { 
      case DIVIDE: 
       displayTextBottom.setText(event.getText()); 
       break; 
      case SUBTRACT: 
       displayTextBottom.setText(event.getText()); 
       break; 
      case ESCAPE: 
       displayTextBottom.setText(""); 
       break; 
      case BACK_SPACE: 
       if (displayTextBottom.getText().length() > 0) { 
        StringBuilder removing = new StringBuilder(displayTextBottom.getText()); 
        removing.deleteCharAt(displayTextBottom.getText().length() - 1); 
        String removed = removing.toString(); 
        displayTextBottom.setText(removed); 
        setDisplayFontSizeBottom(); 
       } 
       break; 

      default: 
       System.out.println("error"); 
     } 
    } 
+0

のようなfxmlファイルのAnchorPaneに結び付けられています。もしキーコードがあれば、それをConsole.forに出力してください:System.out.println(ke.getCode() );それを使ってください。 –

+0

ありがとうございました。しかし、シフト+キーなどのキーの組み合わせはどのように作成する必要がありますか?あなたが知っているなら、私にコントローラクラスの例を教えてください。 – Ahmadali

+0

変更コードがあります。 –

関連する問題