Создание вашего класса источником событий в Java - PullRequest
0 голосов
/ 24 мая 2010

Я делаю пользовательскую кнопку в Java, которая имеет два состояния, mousePressed и mouseReleased.В то же время, если я хочу повторно использовать эту кнопку, чтобы другие слушатели событий могли зарегистрироваться на ней, это те шаги, которые мне следует сделать (это назначение hw, поэтому, хотя JButton можно использовать, я думаю, что мы пытаемсячтобы показать, что мы можем создать нашу собственную кнопку, которая будет действовать как JButton:

  • переопределить addActionListener (действие ActionListener)
  • переопределить removeActionListener (действие ActionListener)
  • у меня есть личная переменная, такая как List list = new List (), чтобы отслеживать, когда события добавляются, и какая-то функция с циклом for для запуска всех действий. Вот что у меня есть:

    открытый классCustomButton {public static void main (String [] args) {EventQueue.invokeLater (new Runnable () {public void run () {CustomButtonFrame frame = new CustomButtonFrame (); frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); frame.setVisible (frame.setVisible));}});}

        public void addActionListener(ActionListener al)
        {
            listenerList.add(al);
        }
    
        public void removeActionListener(ActionListener al)
        {
            listenerList.remove(al);
        }
    
        private void notifyListeners()
        {
            for (ActionListener action : listenerList) {
                action.actionPerfomed();
            }
        }
    
        List<ActionListener> listenerList = new ArrayList<ActionListener>();
    }
    

Я получаю ошибки компиляции: строка 38: ссылка на списокявляется неоднозначным, и класс java.util.List в java.util и класс java.awt.List в совпадении java.awt List listenerList = new ArrayList ();

и строка 34: не удается найти символ, метод actionPerfomed() в интерфейсе java.awt.event.ActionListener action.actionPerformed ();

Ответы [ 2 ]

1 голос
/ 24 мая 2010

Нет, совсем нет!

У JButton есть все, что вам нужно.Просто добавьте своего собственного слушателя к кнопке.Не переопределять что-то.Просто так:

public class MyButton extends JButton implements MouseListener // maybe you want to add other listeners... separate them with comma's.
{
     public MyButton(String caption)
     {
         super(caption);
         addMouseListener(this);
     }

     // implement your listener methods here

}
0 голосов
/ 24 мая 2010

Я делаю пользовательскую кнопку в Java с двумя состояниями, mousePressed и mouseReleased

Возможно, вам следует использовать JToggleButton .

...