0

こんにちは、単一のリスナーを複数のボタンにリンクするときに問題が発生しています。内部クラスを使用しようとしていますが、どこかで間違っているようです。誰かが私を正しい方向に向けることができますか? 自動修正に役立つ場合( :D )は、59行目を指します:

「createChampButton は変数に解決できません」

コード:

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




public class GUI extends JApplet{



    public void init(){
        Container guiContainer = getContentPane();
        LayoutManager layout = new FlowLayout();
        guiContainer.setLayout(layout);


        //Create Championship Button
        final JButton createChampButton = new JButton("Create Championship");
        guiContainer.add(createChampButton);



        //Create Club Button
        final JButton createClubButton = new JButton ("Create Club");
        guiContainer.add(createClubButton);


        //Create Athlete Button
        final JButton createAthleteButton = new JButton ("Create Athlete");
        guiContainer.add(createAthleteButton);


        //Print Athletes Button
        final JButton printAthletesButton = new JButton ("Print all Athletes");
        guiContainer.add(printAthletesButton);


        //The quiet Listener
        ButtonListener aListener = new ButtonListener();
        printAthletesButton.addActionListener(aListener);
        createAthleteButton.addActionListener(aListener);
        createClubButton.addActionListener(aListener);
        createChampButton.addActionListener(aListener);

    }

     class ButtonListener implements ActionListener {
        public void actionPerformed(ActionEvent event){
            JButton button = (JButton) event.getSource();
            //if (button.equals(printAthletesButton)){
                //JOptionPane.showMessageDialog(null, "Athlete name is: " +anAthlete.GetAthleteName());
            //  JOptionPane.showMessageDialog(null, "Athlete age is: " + anAthlete.GetAge());
                //}
            if(button.equals(createChampButton)){
                    Championship aChampionship = new Championship("","");
                    aChampionship.champName = JOptionPane.showInputDialog("Enter Championship Name: ");
                    aChampionship.duration = JOptionPane.showInputDialog("Enter Championship Duration: ");
            }       
        }
    }
}

前もって感謝します、クリス

4

2 に答える 2

4

createChampButtonのローカル変数ですinit()

他の場所でアクセスするには、クラスのフィールドに変更する必要があります。

于 2013-01-31T21:18:16.583 に答える