2

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());
        }
    }

その文字を取得して文字列と比較する方法がわかりません。

4

4 に答える 4

1

私はトラッシュゴッドと一緒です、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);
于 2012-09-04T19:48:59.037 に答える
1

お勧めできませんKeyListener代わりに、以下とここに示すように、各ボタンに名前を知らせます。

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

その後、クラスのcontains()メソッドを使用できます。String

lblWord.getText().contains(button.getText());
于 2012-09-04T19:41:41.147 に答える
0

char charLetterPressed;メソッドのスコープ外にすることができます。

String.valueOf(charChkWord)だけを使用する必要はありませんcharLetterPressed == charChkWord

ifスコープ内で、ラベル テキストを設定した後にループbreak;を終了するために使用します。for

于 2012-09-04T18:01:16.487 に答える
0

次のコードを使用して、KeyPressed

class MyKeyListener extends KeyAdapter {
  public void keyPressed(KeyEvent evt) {

     Char chr = evt.getKeyChar();

    }
  }

キーを押したら、それを Stringに変換するには、次の手順を実行します....

String s = new String(chr);

if(s.equals(charChkWord)){

   // Do something...

}else{

   // Do something...

}
于 2012-09-04T18:05:35.987 に答える