2017-01-27 2 views
0

Я пытаюсь получить код для запуска на мышах с помощью MouseListener.Java Swing mouseClick не работает

Мой код выглядит следующим образом:

class TestingLayout extends JFrame implements MouseListener, MouseMotionListener{ 
... 
    private JFrame w = new JFrame(); 
    private JPanel panel1 = new JPanel(new GridLayout(4,2),false); 

    public TestingLayout(){ 
    addMouseListener(this); 
    BoxLayout boxLayout = new BoxLayout(w.getContentPane(),BoxLayout.Y_AXIS); 
    w.setLayout(boxLayout); 
    w.add(panel1); 
    w.setSize(800,600); 
    w.setVisible(true); 
    ... 
    } 
    ... 
    @Override 
    public void mousePressed(MouseEvent e){ 
    System.out.println("eh"); 
    } 
} 

Но когда я нажимаю на JFrame, он не работает мой код. Я не могу понять это. Один вопрос StackOverflow ссылается на справочную страницу MouseListener, которая, к сожалению, уже не существует.

Все оцененная помощь. Благодаря

+1

Вы пробовали ['setFocusable (true)'] (https://docs.oracle.com/javase/7/docs/api/java/awt/Component.html#setFocusable (boolean))? – khelwood

+1

Чтобы лучше помочь, опубликуйте [MCVE] или [Short, Self Contained, Correct Example] (http://www.sscce.org/). Вероятно, другие компоненты в кадре потребляют события. –

ответ

1

Пара возможных проблем:

  1. Вы добавляете слушатель к раме, так что, может быть, еще один компонент (например, панель), добавляемые к раме получает это событие

  2. A mouseClick представляет собой комбинацию mousePressed и mouseReleased. Если мышь перемещает даже пиксель между двумя событиями, событие не будет генерироваться. Попробуйте прослушивать mousePressed.

Если вам нужна дополнительная помощь, то опубликовать надлежащую mcve, демонстрирующую проблему. В будущем MCVE должен быть опубликован с каждым вопросом, поэтому нам не нужно угадывать, что вы можете или не можете делать.

+0

Этот код лучше? –

+0

Ах! Это была панель! Мне нужно было сделать: panel1.addMouseListener (это); Благодаря! –

+0

@DaveLass 'Этот код лучше?' - Это не «MCVE». Как этот код завершен? Мы не можем его скомпилировать. 'Ах! Это была панель! »- рад, что это помогло. Не забудьте «принять» ответ, нажав на галочку, чтобы люди знали, что проблема решена. – camickr

Смежные вопросы