2013-07-24 3 views
0

У меня есть событие для прослушивания кликами мыши на мой JLabel как:программного вызова нажмите на JLabel

private void jLabel4MouseClicked(java.awt.event.MouseEvent evt) { 

... 

} 

Можно ли каким-то образом ссылаться на это программно?

И нет, я не хочу использовать кнопку с doClick() :)

+3

Что JButtons doClick() имеет дело с чем-то, что вызывает, убедитесь, что иконка помещается в недекорированного JButtons/JToggleButton с doClick() лучше, чем некоторые Hacky fireMouseClicked (пользовательский метод реализован в MouseAdapter) – mKorbel

+0

@mKorbel : может быть, это должен быть ответ. –

+0

@Hovercraft Full Of Eels, возможно, нет, зависит от реальных требований OP, возможно, JLabel является contianer с JComponents, в этом моменте/состоянии мой взгляд такой же, как ваш, – mKorbel

ответ

1

Робот можно щелкнуть в любом месте, так что да, это возможно. Проверьте Robot API и, в частности, mouseMove(...), mousePress(...) и mouseRelease(...).

Сначала вам нужно получить координаты экрана JLabel, но это легко сделать с помощью его getLocationOnScreen() и его метода getSize().

Мне любопытно, насколько вы заинтересованы в этом.

+1

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

+0

@BillK: Вы вполне можете быть правы, но без дополнительного фона и контекста с оригинального плаката я думаю, что еще рано говорить. Я согласен с тем, что ответ Хуана очень хорош (хотя я бы создал объект MouseEvent и не пропустил бы нуль), и я проголосовал за него. –

+1

Я только опустил твою, потому что я не хотел, чтобы это привлекло внимание от цзянь (в то время, когда это превосходило его) - вернет его, если я ошибаюсь :) В общем, я ненавижу нисходящие. –

4

Если у вас нет объектов с объектами MouseEvent, тогда вы можете просто назвать его значением null. Я бы предположил, что если у вас есть код, который нужно выполнить независимо от щелчка кнопки, создайте метод с соответствующими параметрами, вызовите этот метод из обработчика кликов, а затем из другого места, где вам нужно его вызвать.

private void jLabel4MouseClicked(java.awt.event.MouseEvent evt) { 
    this.Method(evt.getX(), evt.getY()); 
} 

private void Method(int x, int y) { 
    /// bla 
} 
Смежные вопросы