1

ユーザーがクリックしたボタンの文字を印刷して、そのボタンを無効にするにはどうすればよいですか

forループを使用して各文字のボタンを生成します

   } for (int i = 65; i <= 90; i++) {
        btnLetters = new JButton(" " + (char) i);
        letterJPanel.add(btnLetters);
        letterJPanel.setLayout(new FlowLayout());
        btnLetters.addActionListener(this);

    }

ボタンをクリックすると、文字が印刷され、ボタンが無効になります。

public void actionPerformed(ActionEvent ae) {

    if (ae.getSource() == btnLetters) {

    }
}
4

4 に答える 4

1
if (ae.getSource() == btnLetters) { } }

この部分は、最後に作成されたボタンに対してのみ機能するため、意味がないと思います。

そのようなことをする方がいい

if (ae.getSource() instance of JButton &&
    ((JButton ) ae.getSource()).getText().length()==2) {
    PRINT(((JButton ) ae.getSource()).getText().substring(1));
    ((JButton ) ae.getSource()).setEnabled(false);
}

ここで、PRINTは実際の印刷です(ただし、これを行う場合)

于 2012-09-04T08:01:11.193 に答える
1

新しいクラスを作成する

public class ButtonDisabler implements ActionListener {
    @Override
    public void actionPerformed(ActionEvent e) {
        JButton button = (JButton)e.getSource();
        System.out.println(button.getText() + " pressed");
        button.setEnabled(false);
    }
}

次に、それを各ボタンに追加します

btnLetters.addActionListener(new ButtonDisabler());
于 2012-09-04T08:07:59.997 に答える
1

まず第一に、私はそれを次のようにします:(整数からキャストするよりも見る方がはるかに良いです)

for(char c = 'A'; c <= 'Z'; c++)
{
    button.setText(""+c);
    ...
}

それから

public void actionPerformed(ActionEvent ae) 
{
    //assuming you only set the action for the JButtons with letters
    JButton button = (JButton) ae.getSource();
    String letter = button.getText();
    print(letter); //for example System.out.println();
    button.setEnabled(false);
}
于 2012-09-04T08:08:45.940 に答える
0

たぶん、内部クラスを使用する方が簡単でしょう

ボタンを作成するとき。

JButton button = new JButton("A");
button.addActionListener(new ActionListener(
    public void actionPerformed(ActionEvent e){
      printMethod(button.getLabel()); //You have to implement this...
      this.disable()
});
于 2012-09-04T08:05:46.103 に答える