mouseover在外界时不会改变字符串

时间:2013-04-26 02:19:19

标签: java swing mouseevent

创建鼠标悬停时遇到问题。在我的应用程序中,我有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_ = " ";
            }
        }
    

1 个答案:

答案 0 :(得分:1)

解决方案:更改appName _

后调用repaint()

如,

    appName_ = " ";
    for (int i = 0; i < systemButton_.length; i++)
    {   
        if (systemButton_[i].getButtonDimesion().contains(mousePosition))
        {
            appName_ = systemButton_[i];  
        }
    }
    repaint();