java - keyReleased 函数不恢复 java 中的原始背景颜色

标签 java swing key jbutton keylistener

当我按下某个键一段时间后,keyReleased 函数中该键的背景颜色没有恢复为原始颜色。我做错了什么。如果您可以将我重定向到某个包含有关如何通过示例制作此类程序的教程的网站,这将非常有帮助。这是代码:

public void keyPressed(KeyEvent event)
    {
        int code= event.getKeyCode();
        String x,h;

        for(int i=0;i<names.length;i++)
        {
            s=names[i];
            x=s.trim();

            if(x.contentEquals(event.getKeyText(code)) )
            {
                backColor=but[i].getBackground();
                but[i].setBackground(Color.RED);
                break;
            }
        }
        switch(event.getKeyCode())
        {
        case KeyEvent.VK_BACK_SLASH:
            h=" \\ ";
            for(int i=0;i<but.length;i++)
            {
                if(h.contentEquals(but[i].getText()))
                {
                    backColor=but[i].getBackground();
                    but[i].setBackground(Color.RED);
                    buttonIndex=i;
                    break;
                }
            }
            break;
    }
public void keyReleased(KeyEvent event)
    {
        String x;
        int code= event.getKeyCode();

        for(int i=0;i<names.length;i++)
        {
            s=names[i];
            x=s.trim();

            if(x.contentEquals(event.getKeyText(code)) && !s.contentEquals("                             "))
            {System.out.println("outside");
                but[i].setBackground(backColor);
                break;
            }
            else
                if(s.contentEquals("                             "))
                {
                    but[buttonIndex].setBackground(backColor);
                }
        }
    }

最佳答案

  • 不要使用Keylistener对于 Swing JComponentsuse KeyBindings instead

  • 您的 JFrameJPanelJComponent 必须可聚焦 (setFocusable)

  • 某一时刻只有一个JComponent可以聚焦,那么你的程序将focus_hunter,这不会导致by using KeyBindings

  • 为了获得更好的帮助,请尽快发布 SSCCE ,短,可运行,可编译

关于java - keyReleased 函数不恢复 java 中的原始背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13429048/

相关文章:

java - 从 JAR 依赖项运行测试

java - 透明JButton占用了其他的背景,如何解决?

java - 使用时间步长更新 JLayeredPane 内重叠的 JPanel 时闪烁

android - 通过Java编程语言在android中读取/dev/input/event

java - 上传文件到数据库查毒

java - Intent.getStringExtra 上出现空指针异常。 : Android

java - 从相机捕获图像并将其显示在android的另一个 Activity 中

java - 在另一个 JFrame 上显示主类的数据

python - 比较两个字典并在 python 中打印不相等的值

python - 在字典中查找具有最多值的键