首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java MouseMotionListener

Java MouseMotionListener
EN

Stack Overflow用户
提问于 2015-03-28 02:57:58
回答 2查看 1.2K关注 0票数 1

我正在用java开发一个Reversi游戏,我正在做的一件事就是让它的背景颜色变成绿色,如果移动是有效的。我想要做到这一点,当玩家将鼠标放在空格上时,它会变成绿色,但当鼠标从空格中移走时,我很难弄清楚如何让颜色恢复到默认颜色。以下是我的代码,它暂时将颜色更改为红色:

代码语言:javascript
复制
gameSpacePanel.addMouseMotionListener(new MouseAdapter() {
            public void mouseMoved(MouseEvent e) {
                gameSpacePanel.setBackground(Color.RED);
            }
            public void mouseExited(MouseEvent e) {
                gameSpacePanel.setBackground(Color.GRAY);
            }
        });

我尝试了mouseExited方法,但显然这并不能实现我所认为的效果。有什么建议吗?mouseMoved方法运行得很好,我只是不知道如何在移除鼠标后使颜色恢复正常。谢谢!

EN

回答 2

Stack Overflow用户

发布于 2015-03-28 03:31:00

每次鼠标移动时都会触发一个MouseMove事件。如果我错了,请纠正我,你希望鼠标在进入时改变颜色,在退出时改变回默认颜色吗?首先MouseMotionListener没有mouseExited方法,改用MouseListener,然后替换

代码语言:javascript
复制
void mouseMoved(MouseEvent e) 

使用

代码语言:javascript
复制
void mouseEntered(MouseEvent e) 

它应该看起来像这样:

代码语言:javascript
复制
gameSpacePanel.addMouseListener(new MouseAdapter() {
            public void mouseEntered(MouseEvent e) {
                gameSpacePanel.setBackground(Color.RED);
            }
            public void mouseExited(MouseEvent e) {
                gameSpacePanel.setBackground(Color.GRAY);
            }
        });
票数 2
EN

Stack Overflow用户

发布于 2015-03-28 03:23:22

我刚刚试过了,结果和你一样。但后来我意识到你只是添加了MouseAdapter作为MouseMotionListener。您还必须将其添加为MouseListener,因为mouseExited()是该接口的一部分,而mouseMoved()MouseMotionListener的一部分。

下面是一个简短的程序,它可以工作:

代码语言:javascript
复制
import java.awt.Color;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class Test {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JFrame frame = new JFrame();
                final JPanel panel = new JPanel();
                MouseAdapter mouseAdapter = new MouseAdapter() {
                    public void mouseMoved(MouseEvent e) {
                        panel.setBackground(Color.RED);
                    }
                    public void mouseExited(MouseEvent e) {
                        panel.setBackground(Color.GRAY);
                        panel.repaint();
                    }
                };
                panel.addMouseListener(mouseAdapter);
                panel.addMouseMotionListener(mouseAdapter);
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setContentPane(panel);
                frame.pack();
                frame.setVisible(true);
            }
        });
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29308239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档