为了账号安全,请及时绑定邮箱和手机立即绑定

JButton 干扰 JPanel 上的鼠标侦听器

JButton 干扰 JPanel 上的鼠标侦听器

互换的青春 2023-01-05 17:09:51

我有JPanel一个鼠标侦听器,用于检查mouseEntered和,这与鼠标聚焦到窗格上的按钮并触发事件mouseExited这一事实完全不同。mouseExited

是否有设置使按钮不占用鼠标焦点?


查看完整描述

1 回答

?
白衣染霜花

TA贡献1559条经验 获得超9个赞

在这种情况下,我从来不需要专门修改焦点。我也不熟悉 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");

          }

       }


    }


查看完整回答
反对 回复 2023-01-05

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信