如题:当我把鼠标指针移到该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() 方法里注销这个监听器