mouseEntered和mouseExited方法问题

时间:2014-06-11 02:37:39

标签: java swing interface mouselistener system.out

在使用MouseListener时,在鼠标光标进入和退出某个彩色区域(在这种情况下称为面板的JPanel)时,我正在解决如何打印一行文本的问题接口

我从底部面板选择一种颜色(红色,蓝色或黄色),然后当我移动到上面板时,它应该能够打印鼠标在面板中时输入的颜色。当我的鼠标发现自己在所述面板之外时,我退出了哪种颜色...

希望这是有道理的。这是我到目前为止所拥有的代码片段。这是为了颜色RED:

class RedButtonListener implements ActionListener
    {
        public void actionPerformed(ActionEvent event)
        {
            panel.setBackground(Color.RED); 
            class RedMouseListener implements MouseListener
            {

                public void mouseEntered(MouseEvent event) 
                { 

                }

                public void mouseExited(MouseEvent event) 
                { 

                }

                public void mousePressed(MouseEvent event) { }

                public void mouseReleased(MouseEvent event) { }

                public void mouseClicked(MouseEvent event) { }
            }
        }
    }
    ActionListener redListener = new RedButtonListener();
    bRed.addActionListener(redListener);

1 个答案:

答案 0 :(得分:0)

以下是Stack Overflow Mouse moved event within JPanel

中的相关问题

我建议您确保正确收听触发器(尝试打印“Hello World”)从那里您需要在鼠标事件中进行颜色状态的通信。如果所有内容都在同一个实例中,您只需访问事件监听器中所需的变量即可。

以下是MouseEvent http://docs.oracle.com/javase/7/docs/api/java/awt/event/MouseEvent.html

上的文档

确保添加了鼠标侦听器,请尝试以下

panel.addMouseListener(new RedMouseListener());

开始简单地完成以下工作

public void mouseEntered(MouseEvent event) 
{ 
    System.out.println("Hello World!");
}

如果您需要在事件监听器中访问面板的颜色,请尝试以下代码段

panel.getBackground();

这将返回一个Color对象。

可以通过使用匿名内部类来避免额外的类声明。请参阅How are Anonymous (inner) classes used in Java?这些重写的方法本质上是MouseListener的子类,但我们不需要按名称调用它。

panel.addMouseListener(new MouseListener(){ 
    @Override
    public void mouseReleased(MouseEvent e) {}

    @Override
    public void mousePressed(MouseEvent e) {}

    @Override
    public void mouseExited(MouseEvent e) {}

    @Override
    public void mouseEntered(MouseEvent e) {}

    @Override
    public void mouseClicked(MouseEvent e) {}
});