Поддержка объектно-ориентированного подхода при использовании слушателей в Java

У меня есть код, подобный следующему:

public class myButton extends JButton()
{
    public int data;
    public myButton(){
        super("asdf");
        data = 2;
    }
}

public class myPanel extends MouseListener()
{
    myButton myButtonVar1;
    myButton myButtonVar2;
    public myPanel()
    {
        myButtonVar1 = new myButton();
        myPanel.add(myButtonVar1);
        myButtonVar1.addMouseListener(this);
        myButtonVar2 = new myButton();
        myPanel.add(myButtonVar2);
        myButtonVar2.addMouseListener(this);
    }

    //MouseListener Methods are here
    void mouseClicked(MouseEvent e)
    {
        //say this changes the myButton that was clicked data based off
        //the other myButton's data
        doSomething((myButton)(e.getSource()).data);
    }
}

И затем я добавляю эту панель в JFrame через setContentPane.

Это работает нормально. У обработчика должен быть доступ ко всем кнопкам, потому что он должен знать myButtonVar1.data и myButtonVar2.data

Эта настройка мне не подходит, но основная проблема в том, что мне нужно иметь другие кнопки в также фрейм, который обращается к myButtons.

Итак, как я могу это очистить, чтобы добавить что-то «resetButton», которое сбрасывает все myButton, содержащиеся в myPanel. Для меня выделяется способ использования instanceof, чтобы увидеть, является ли источник resetButton или myButton, но это, похоже, сильно обескураживает все, что я видел.

Надеюсь, я не так уж далек от этого. . Моя цель - написать хороший код, а не придерживаться того, что у меня есть, поэтому дайте мне знать, если я уже сделал что-то в корне неправильно, и мне следует отказаться.

1
задан Kyle 20 September 2010 в 20:08
поделиться