在使用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);
答案 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) {}
});