当前位置: 代码迷 >> J2SE >> JComboBox 获取箭头部分或者怎么为箭头部分添加监听事件
  详细解决方案

JComboBox 获取箭头部分或者怎么为箭头部分添加监听事件

热度:367   发布时间:2016-04-24 01:22:58.0
JComboBox 获取箭头部分或者如何为箭头部分添加监听事件?
如题:当我把鼠标指针移到该JComboBox的箭头部分时,如何捕获鼠标指针离开了该JComboBox的整个组件(或者只是箭头部分)?
  我尝试为该组件添加如下事件:
 
Java code
 MouseListener mouseListener=new MouseListener(){            @Override            public void mouseClicked(MouseEvent arg0) {                // TODO Auto-generated method stub                            }            @Override            public void mouseEntered(MouseEvent arg0) {                // TODO Auto-generated method stub                            }            @Override            public void mouseExited(MouseEvent arg0) {                // TODO Auto-generated method stub                CalendarHack.this.removeAll();                CalendarHack.this.repaint();                setUpButton(CalendarHack.this.frame);                setDate_Control();                CalendarHack.this.updateUI();            }            @Override            public void mousePressed(MouseEvent arg0) {                // TODO Auto-generated method stub                            }            @Override            public void mouseReleased(MouseEvent arg0) {                // TODO Auto-generated method stub                            }                    };

  但其只能捕获鼠标指针离开的左边部分,对于右边部分的箭头组件无法捕获。
  另外,PopupMenuListener事件没有涉及鼠标移动的事件。
  哪位朋友、大侠能帮忙看下?
  鞠躬了,谢谢!

------解决方案--------------------
有个办法,不过比较麻烦
楼主看一下 BasicComboBoxUI 类的
public void configureArrowButton() 方法
这个里面就是给右边那个按钮注册事件的地方

你需要做的就是,重写一个 BasicComboBoxUI 或 MetalComboBoxUI
然后重写里面的 configureArrowButton 方法
在这里,自己再给 arrowButton 注册一个监听器

另外别忘了在 
public void unconfigureArrowButton() 方法里注销这个监听器