JButton мешает слушателю мыши на JPane - PullRequest
0 голосов
/ 06 июня 2019

У меня есть JPane с слушателем мыши, который проверяет mouseEntered и mouseExited, это прекрасно работает, если учесть, что мышь фокусируется на кнопке на панели и вызывает событие mouseExited.Есть ли настройка, чтобы JButton не фокусировался на мыши?

1 Ответ

1 голос
/ 07 июня 2019

Мне никогда не нужно было специально изменять фокус в этом типе сценария.Также я не знаком с JPane, поэтому я предположил, что вы имеете в виду JPanel.


    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;

    public class FocusDemo {
       private JPanel  panel;
       private JButton button1;

       JFrame          frame = new JFrame("TempWindow");

       private FocusDemo() {
          panel = new JPanel();
          button1 = new JButton("Button");
          button1.addActionListener((ae) -> System.out.println("button pressed"));
          panel.add(button1);
          MyMouseListener ml = new MyMouseListener();
          panel.addMouseListener(ml);
          panel.addMouseMotionListener(ml);
          frame.add(panel);

       }

       public static void main(String[] args) {
          SwingUtilities.invokeLater(() -> new FocusDemo().start());
       }

       public void start() {
          frame.setLocationRelativeTo(null); // this line set the window in the
                                             // center of the screen
          frame.setPreferredSize(new Dimension(500, 500));
          frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
          frame.pack();
          frame.setLocationRelativeTo(null);
          frame.setVisible(true);

       }

       private class MyMouseListener extends MouseAdapter {
          public void mouseEntered(MouseEvent me) {
             System.out.println("mouse entered");
          }

          public void mouseExited(MouseEvent me) {
             System.out.println("mouse exited");
          }
       }

    }

...