0

基本的に、アルファベットの各文字の配列を作成し、それを JButton の配列に追加しました。それはうまくいきますが、私はうまく動作するようになったアクションリスナーを追加しようとしました。

しかし、各ボタンが押されているかどうかを確認する if ステートメントが 26 個あるため、for ループを追加しようとした理由は機能します。

ボタンを押すと、JbUTTON プロパティに関する大量のゴミが出力されます。どこで間違っている可能性がありますか?

String[] letters = { "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "A", "S", "D", "F", "G", "H", "J", "K", "L", "Z", "X", "C", "V", "B", "N", "M" };
    layout.add(scrollBar);
     for (int i=0; i < 26; i++)
     {

        if (i==25)
        {
            layout.add(spacebar);
            spacebar.setPreferredSize(new Dimension(310,50));
            spacebar.setBackground(Color.black);
            spacebar.setForeground(Color.white);
            spacebar.addActionListener(new action());
        }

         AlphaButton[i] = new JButton(letters[i]);
         AlphaButton[i].setPreferredSize(new Dimension(50,50));
         AlphaButton[i].setBackground(Color.black);
         AlphaButton[i].setForeground(Color.white);
         layout.add(AlphaButton[i]);
         AlphaButton[i].addActionListener(new action());
     }
    class action implements ActionListener
        {
            public void actionPerformed(ActionEvent e)
            {
                String V = screenArea.getText();

                for (int i=0; i < 26; i++)
                {
                    if( e.getSource() == AlphaButton[i] )
                    {
                        screenArea.setText(V + AlphaButton[i]);
                    }
                }

            }
        }
4

3 に答える 3

2

押された手紙を返却する必要がある場合:

screenArea.setText(V + AlphaButton[i].getText);
于 2013-11-11T01:25:47.023 に答える
0

AlphaButton toStringメソッドをオーバーライドする必要があります

// your class
public class AlphaButton {

    @Override
    public String toString() {
        return "This is an AlphaButton";  // or whatever output you want it to say
    }
}
于 2013-11-11T01:21:33.043 に答える