如何通过HashMap发送文本?

时间:2017-08-01 23:12:48

标签: java hashmap fxml

如何通过hashmap传递“toEncrypt”文本并将其显示在“加密”标签上?这一直困扰着我。我只能得到用户想要加密的内容而不加密显示在标签上。

@FXML
Button encrypt;
@FXML
Label encrypted;
@FXML
TextField toEncrypt;

@FXML
private void encryptButton(ActionEvent event) {
encrypted.setText(toEncrypt.getText());
}

@FXML
private void secretMessage (ActionEvent event) {

    HashMap<String,String> secret = new HashMap<String, String>();


    //*****UPPER CASE LETTERS*****
    secret.put("A","9");
    secret.put("B","J");
    secret.put("C","Q");
    secret.put("D","1");
    secret.put("E","T");
    secret.put("F","B");
    secret.put("G","Z");
    secret.put("H","R");
    secret.put("I","t");
    secret.put("J","m");
    secret.put("K","q");
    secret.put("L","p");
    secret.put("M","o");
    secret.put("N","3");
    secret.put("O","v");
    secret.put("P","y");
    secret.put("Q","X");
    secret.put("R","z");
    secret.put("S","l");
    secret.put("T","S");
    secret.put("U","5");
    secret.put("V","w");
    secret.put("W","C");
    secret.put("X","K");
    secret.put("Y","8");
    secret.put("Z","n");
   //**********************


@Override
public void initialize(URL url, ResourceBundle rb) {
    // TODO
}    

1 个答案:

答案 0 :(得分:1)

很高兴看到你已经尝试过的东西;所以我不仅要提供一个完整的,有效的答案,而且还要指出一些可以让你前进的概念。

对于“通过HashMap”步骤,您可以像char一样迭代String,如下所示:

final String toEncryptString = toEncrypt.getText();
final char[] encrypted = new char[toEncryptString.length()];
for (int i = 0; i < toEncryptString.length(); i++) {
    final char c = toEncryptString.charAt(i);
    final char e;
    // TODO - Set 'e' from getting the value from the HashMap
    encrypted[i] = e;
}
return new String(encrypted);

我假设你在某处设置了这个,但是你没有在你共享的代码中设置encrypt Button的逻辑。 Button有一个setOnAction,您应该可以使用encrypt.setOnAction(this::encryptButton); ,例如:

Button

在尝试使用HashMap之前,您只需找到设置此位置始终的地方。

最后,如果没有提到将static构造为方法的一部分似乎很奇怪(每次尝试加密某些东西时都必须这样做),那将是我的疏忽。将此设置为字段(或类似 - static char getEncrypted(final char given) { return map.get(given); }字段,隐藏在实用程序类中,通过null访问)将更具性能(尽管确保您正在处理潜在的[edemon@CentOS workspace]$ ./while.sh [edemon@CentOS workspace]$ s无论你采取何种解决方案。

希望这能让你开始。