2017-01-11 10 views
0

Мне интересно, есть ли эффективный способ обработки щелчков мыши в пределах диапазона координат, а не с кучей if-утверждений. Это заставляет меня думать о том, как использовать Listener для его обработки, однако можно ли даже назначить Listener произвольному объекту?Эффективное управление щелчками мыши

ответ

0

Если вы говорите о прослушивании действий мыши на JComponent, как JButton, вы можете добавить MouseListener в JComponent.

Если вы говорите об объектах, созданных вами, которые отображаются в виде изображения на панели, вы можете добавить MouseListener на панель, содержащую ваши объекты. На каждом щелчке мыши, итерации через объекты на панели и проверить, содержит ли объект курсор мыши.

class DisplayPanel extends JPanel{ 

    //Your constructor and other members.. 
    public DisplayPanel(){ 
     addMouseListener(new MouseAdapter(){ 
      public void mouseClicked (MouseEvent e){ 
       for(MyObjects : obj) 
        if(obj.contains(e.getX(), e.getY())) 
         clickedObj = obj; 
      } 
     }); 
    } 
} 

ли вы имеете в виду есть произвольный класс расширения JComponent? Что, если он уже расширяет другой класс?

Альтернативой было бы рассмотреть вопрос о создании индивидуального JComponent. Однако, если ваш объект уже распространяется на другой класс. Вы можете рассмотреть состав по наследованию:

class ArbritaryComponent extends JComponent{ 
    private ArbritaryObject obj; 
} 

class ArbritaryObject extends SomeClass{ 
    private Image image; 
} 

Затем добавьте слушателя в свой индивидуальный компонент. Чтобы получить краткое представление о настройке JComponent: Extending JComponent

+0

Я стараюсь избегать итерации, если это возможно, но да, это изображение, которое появляется на JFrame, но это объект, созданный мной. –

+0

@JacobG. Сколько у вас объектов? – user3437460

+0

Недостаточно того, что при итерации по ним будет замедляться программа, но мне любопытно, есть ли другой способ ее обработки. –