【问题标题】:Java FX Alphanumeric KeyboardJava FX 字母数字键盘
【发布时间】:2018-07-27 18:32:34
【问题描述】:

我是编程初学者。我正在创建一个看起来像 traditional T9 Keyboard 的键盘。我可以打印显示的字母,但我现在几乎没有错误。我无法使用密钥的次数打印特定字符 按下

这是我的代码,感谢任何形式的帮助。谢谢

    public int count = 0;

    @FXML
    private void handleButtonActionPQ(ActionEvent event) {
        count = count + 1;

        //key.btn1f();
        System.out.println(count);
        if(count <= 5 ){

            switch(count){
                case 1: display.appendText("p");
                        break;
                case 2: display.appendText("q");
                        break;
                case 3: display.appendText("x");
                        break;
                case 4: display.appendText("y");
                        break;
                case 5: display.appendText("z");
                        break;
                default: display.appendText("p");
            }
        }
        else if(count > 5){
            count = 0;
        }
    }

【问题讨论】:

  • 您正试图在一个线程中解决许多问题。
  • @Sedrick 评论说,请在每个帖子中提出一个重点问题。也不要发布太多代码,请参阅minimal reproducible example。例如演示按键计数,一个按钮就足够了。
  • 好的,我已经根据您的要求编辑了一个,您现在可以帮帮我吗。 @c0der

标签: java javafx custom-keyboard


【解决方案1】:

以下 mcve 演示了一种识别按下哪个按钮的方法:

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;

public class FxMain extends Application {

    private Button aButton, bButton;

    @Override
    public void start(Stage stage) {

        final GridPane cp = new GridPane();
        aButton = new Button("A");
        bButton = new Button("B");

        aButton.setOnAction(e ->  buttonPressed(e));
        bButton.setOnAction(e ->  buttonPressed(e));        
        cp.add(aButton, 0, 0); cp.add(bButton, 1, 0);

        stage.setScene(new Scene(cp));
        stage.show();
    }

    //you could also have buttonPressed(Button b) 
    //and use it like: aButton.setOnAction(e ->  buttonPressed(aButton))
    private void buttonPressed(ActionEvent e) {

        if(! (e.getSource() instanceof Button) ) { return;}
        Button button = (Button) e.getSource();

        if(button.equals(aButton)) { System.out.println("A pressed"); }
        else if(button.equals(bButton)) { System.out.println("B pressed"); }
    }

    public static void main(String[] args) { launch(args);}
}

【讨论】:

  • 感谢您的帮助,有没有办法检测,假设我有 10 个按钮,我想知道用户是否随机单击按钮。我想检测用户是否重复点击了相同的按钮或不同的按钮。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-06
  • 2014-04-29
  • 2015-06-03
  • 1970-01-01
  • 1970-01-01
  • 2018-08-26
  • 1970-01-01
相关资源
最近更新 更多