1

创建鼠标悬停时遇到问题。在我的应用程序中,我有 3 个小图像,当鼠标在图像范围内时,一个字符串将绘制该图像的名称。问题是当鼠标移出图像时,绘制的字符串仍然存在,并且只有当我将鼠标移到另一个图像上时才会改变。所以我认为添加一个else语句是合乎逻辑的事情。因此,对于应该更改appName_为的 else 语句" ",最后一个图像systemButton_[2]可以按需要工作,但其他两个根本不会在屏幕上绘制字符串。

简而言之:

  1. 注释掉else后,每个图像都会触发为鼠标移动的当前图像绘制适当的名称,但不会像" "鼠标移出图像时那样重绘字符串。

  2. else未注释的情况下,最后一个图像可以正常绘制字符串并将字符串返回到" "鼠标在图像之外时,但其他图像完全停止工作。

        @Override
        public void mouseMoved(MouseEvent event) 
        {
            super.mouseMoved(event);
            Point mousePosition = event.getPoint();
    
            for (int i = 0; i < systemButton_.length; i++)
            {   
                if (systemButton_[i].getButtonDimesion().contains(mousePosition))
                {
                    switch (i)
                    {
                    case 0 :
                        appName_ = systemButton_[0].getName();
                        break;
                    case 1 :
                        appName_ = systemButton_[1].getName();
                        break;
                    case 2 :
                        appName_ = systemButton_[2].getName();
                        break;
                    }   
                }
                else 
                    appName_ = " ";
            }
        }
    
4

1 回答 1

1

解决方法:repaint()更改appName_后调用

例如,

    appName_ = " ";
    for (int i = 0; i < systemButton_.length; i++)
    {   
        if (systemButton_[i].getButtonDimesion().contains(mousePosition))
        {
            appName_ = systemButton_[i];  
        }
    }
    repaint();
于 2013-04-26T02:30:00.113 回答