2017-02-18 8 views
0

私はf.eをクリックしなければならなかった古い携帯電話のようなキーボード入力でSMSアプリケーションをシミュレートしようとしています。ボタン「2」を2回押して文字「b」を入力し、「c」などを3回入力します。いくつかのボタンがあり、それぞれのためにいくつかの種類の遅延を設定する必要があります。文字または記号。私はここに便利なjava.util.Timerがあることを知っていますが、この状況でそれをどのように適用するのか、最初に「ボタン」をクリックした後でのみ、次の毎回ではなく遅らせる方法を理解できません。 以下は、私のコードで使用しているサンプルのFXML要素と、ボタンがクリックされたときに呼び出されるメソッドです。JavaFXのタイマーでカウントボタンのクリック

... 
@FXML 
Button button_2; 

... 

public void handleButton2(){ 
    //Code to execute to count clicks ? 
    ... 
    //Array of Strings instead of Characters to use .appendText without parsing 
    String []letters = {"a", "b", "c", "2"}; 
    sms_text_area.appendText(letters[/*index of letter*/]); 
} 
... 

答えて

1

ボタンが最後にクリックされた場合は、ボタンによって表される文字列を変更する必要があることに注意してください。

一般に、遅れて何かを実行するには、PauseTransitionを使用します。はい

private Button lastButtonClicked ; 
private int buttonClickCount ; 

private final PauseTransition buttonPressDelay 
    = new PauseTransition(Duration.seconds(0.5)); 

、その後

public void handleButton2(){ 

    String[] letters = {"a", "b", "c", "2"}; 

    buttonPressDelay.setOnFinished(e -> { 
     sms_text_area.appendText(letters[buttonClickCount]); 
     lastButtonClicked = null ; 
    }); 

    if (lastButtonClicked == button_2) { 
     buttonClickCount = (buttonClickCount + 1) % letters.length ; 
    } else { 
     buttonClickCount = 0 ; 
    } 
    buttonPressDelay.playFromStart(); 
    lastButtonClicked = button_2 ; 
} 
+0

が、私はまだ私が求めていたものを、実際にカウント数を取得するには、追加のコントローラを必要とするこの方法は、方法です:

だから、いくつかの余分なフィールドをご紹介メソッドを呼び出すための遅延を設定します。したがって、コードは最初にクリック数をカウントしてから、追加のユーザー操作なしでハンドラーを自動的に呼び出します。 I.半秒のコントローラーがクリック数を取得し、クリック数の指標付きの文字を追加した後、2回ボタン「2」をクリックしました。 –

+0

申し訳ありませんが、 "enter"を早くクリックしてコメントを更新しました。 –

+0

私はこれらの電話機でテキストがどのように働いていたのかを覚えていません:)。更新を参照してくださいが、私はそれがかなり正しいとは思わない... –

関連する問題