相关疑难解决方法(0)

摆动鼠标听众被儿童组件拦截

我有一个包含几个子组件的swing组件.如果鼠标位于任何组件之上,我想要做的是更改某些标签,如果鼠标移出所有组件,则将其更改为其他标签.我正试图找到一种更有效的方法来做到这一点.

目前,我对所有子组件都有鼠标监听器,它们看起来像:

class AMouseListener extends MouseAdapter {
    private boolean mouseOver;
    mouseEntered(MouseEvent e) { mouseOver = true; updateLabel(); }
    mouseExited(MouseEvent e) { mouseOver = false; updateLabel(); }

    void updateLabel() {
       String text = "not-over-any-components";
       // listeners are each of the listeners added to the child components
       for ( AMouseListener listener :listeners ) {
          if ( listener.mouseOver ) {
             text = "over-a-component";
             break;
          }
       }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是有效的,但我觉得应该有一个更好的方法来处理这个只通过处理父容器上的mouseEntered和mouseExited事件,但由于子组件拦截这些事件,我不知道如何去做(I不一定能控制子组件所以如果我愿意,我不能将鼠标事件转发给父事件.

java swing mouseevent

6
推荐指数
1
解决办法
4610
查看次数

标签 统计

java ×1

mouseevent ×1

swing ×1