【问题标题】:How to get letter pressed from JButton and compare it to a string如何从 JButton 按下字母并将其与字符串进行比较
【发布时间】:2012-08-29 10:12:15
【问题描述】:

按下时从JButton获取按下的字母

  public class ButtonDisabler implements ActionListener {

    @Override
    public void actionPerformed(ActionEvent e) {
        JButton btnGetText = (JButton) e.getSource();
        char charLetterPressed;            
        charLetterPressed=(btnGetText.getText().charAt(1));

        btnGetText.setEnabled(false);
    }
}

然后使用该字母并将其与字符串进行比较,然后仅在找到 JLabel 时才显示该字母

 char charChkWord;
     StringBuffer word = new StringBuffer();
    for (int i = 0; i < strRandomWord.length(); i++) {
        charChkWord = strRandomWord.charAt(i);
        if (charLetterPressed == String.valueOf(charChkWord)) {
            lblWord.setText(word.append(charChkWord).toString());
        }
    }

我不确定如何获取该字母并将其与字符串进行比较。

【问题讨论】:

    标签: java string swing for-loop jbutton


    【解决方案1】:

    您可以使char charLetterPressed; 超出方法范围。

    您不需要String.valueOf(charChkWord),只需使用charLetterPressed == charChkWord

    if范围内使用break;在设置标签文本后退出for循环。

    【讨论】:

      【解决方案2】:

      使用以下代码获取KeyPressed

      class MyKeyListener extends KeyAdapter {
        public void keyPressed(KeyEvent evt) {
      
           Char chr = evt.getKeyChar();
      
          }
        }
      

      现在,一旦您按下,要将其转换为字符串,请执行以下操作....

      String s = new String(chr);
      
      if(s.equals(charChkWord)){
      
         // Do something...
      
      }else{
      
         // Do something...
      
      }
      

      【讨论】:

        【解决方案3】:

        我无法推荐KeyListener。相反,让每个按钮知道它的名称,如下所示和here

        for (int i = 0; i < 26; i++) {
            String letter = String.valueOf((char) (i + 'A'));
            buttons[i] = new JButton(letter);
            north.add(buttons[i]);
        }
        

        然后您可以使用String 类中的contains() 方法。

        lblWord.getText().contains(button.getText());
        

        【讨论】:

          【解决方案4】:

          我和垃圾神在一起,如果可以的话,我会避免使用KeyListeners

          我还将按钮的文本设置为您要使用的字符和/或设置按钮的名称

          JButton btnA = new JButton("A");
          btnA.setName("A");
          

          这将允许您选择如何在按钮上显示文本,同时为您提供一种方法来提供可能对您更有用的附加信息...

          JButton button = (JButton) evt.getSource();
          String text = button.getText();
          // If you wanted to use the name of the button instead...
          String name = button.getName();
          
          // You would use this if you need part of the text...
          char charPressed = Character.toLowerCase(text.charAt(0)); 
          // You could to this to convert the character to a String for easier
          // comparison...
          String strCharPressed = Character.toString(text.charAt(0)).toLowerCase(); 
          
          // A sample
          String word = "This is a test";
          
          // Finds the first occurrence of the character in the String...
          // Comparison is case sensitive...
          // If indexOf > -1 then the word contains the character
          int indexOf = word.toLowerCase().indexOf(charPressed);
          // Or, you just check to see if it is contained in the word...
          boolean contains = word.toLowerCase().contains(Character.toString(charPressed));
          
          System.out.println("indexOf = " + indexOf);
          System.out.println("contains = " + contains);
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-05-04
            • 1970-01-01
            • 2022-08-14
            • 1970-01-01
            相关资源
            最近更新 更多