1

スタックオーバーフローの誰かが、ボタンのコードを手伝ってくれて、より適切な正しいコードを提供してくれました...しかし、問題は、誰かがボタンをクリックすると単語をスキャンしなければならないハングマンプログラムでこのコードを使用したいということです。 「はい、文字は単語の中にあります」または「いいえ、文字は単語の中にありません」のいずれかを出力します

それを行うstackoverflowのコードに出くわしましたが、その人のコードをボタンのコードに適応させる方法がわかりません

ボタンを作成するためのコード(取得したとおり):

public CharSearch(){

super(BoxLayout.Y_AXIS);
    for(char i = 'A'; i <= 'Z'; i++){
        String buttonText = new Character(i).toString();
        JButton button = getButton(buttonText);
        add(button);
    }
}

public JButton getButton(final String text){
    final JButton button = new JButton(text);
    button.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e) {
            JOptionPane.showMessageDialog(null, "You have clicked: "+text);
            //If you want to do something with the button:
            button.setText("Clicked"); // (can access button because it's marked as final)
        }
    });
    return button

そして、見つけたコード(リンクも投稿します):

if(original.indexOf(button)!=-1){
    JOptionPane.showConfirmDialog(panel, "Your word does contain" + button );
}
else{
    JOptionPane.showConfirmDialog(panel, "There is no" + button );
}

文字列に単一の文字が含まれているかどうかを確認するにはどうすればよいですか?

質問は、2 つのコードを連携させる方法です。それらを融合しようとしましたが、indexOf at でエラーが発生します

if(original.indexOf(button)!=-1){

完全なコードも投稿します。

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public final class CharSearch extends Box{
int i =0;
int error = 0;
static JPanel panel;
String original = "Dinosaur";
JLabel label = new JLabel();
String secret = new String(new char[original.length()]).replace('\0', '-');

public CharSearch(){

super(BoxLayout.Y_AXIS);
    for(char i = 'A'; i <= 'Z'; i++){
        String buttonText = new Character(i).toString();
        JButton button = getButton(buttonText);
        add(button);
    }
}

public JButton getButton(final String text){
    final JButton button = new JButton(text);
    button.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e) {
            JOptionPane.showMessageDialog(null, "You have clicked: "+text);
            //If you want to do something with the button:
            button.setText("Clicked"); // (can access button because it's marked as final)
        }
    });
    return button;

    if(original.indexOf(button)!=-1){
    JOptionPane.showConfirmDialog(panel, "Your word does contain" + button );
    }
 else{
    JOptionPane.showConfirmDialog(panel, "There is no" + button );
 }

}

public static void main(String[] args){
    EventQueue.invokeLater(new Runnable(){
        public void run(){
           JFrame frame=new JFrame();
            frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
            frame.setContentPane(new CharSearch());
            frame.pack();
            frame.setVisible(true);
            new CharSearch();
        }
    });
}
}
4

1 に答える 1

0

ボタンを button.getText() に変更します (ボタンのテキストが b または c のようなものであると仮定します)。または、すべての文字に名前を付けている場合は getName に変更します (ボタンに別のものを使用できるため、より良いかもしれません)。ボタンが表示するテキスト、ボタンは「Choose c」のように、名前は「c」でも機能します)

于 2012-08-26T16:43:50.080 に答える