Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中将ActionListener合并到MouseMotionListener_Java_User Interface_Actionlistener_Mouselistener - Fatal编程技术网

在java中将ActionListener合并到MouseMotionListener

在java中将ActionListener合并到MouseMotionListener,java,user-interface,actionlistener,mouselistener,Java,User Interface,Actionlistener,Mouselistener,如何将actionPerformed()合并到mouseMoved() 这是我的代码: public void mouseMoved(MouseEvent e) { if(e.getSource()==app.p1){ ???? } } public void actionPerformed(ActionEvent e){ if(e.getSource()==b1) ???? } b1是一个显示“红色”的按钮,p1是一个用蓝色着色的面板。 我想要一个结果,当我点击b1

如何将
actionPerformed()
合并到
mouseMoved()

这是我的代码:

public void mouseMoved(MouseEvent e) {
if(e.getSource()==app.p1){
        ????
}

}
public void actionPerformed(ActionEvent e){
if(e.getSource()==b1)
    ????
}
b1是一个显示“红色”的按钮,p1是一个用蓝色着色的面板。 我想要一个结果,当我点击b1,我会得到一个颜色。当我将鼠标移动到p1时,p1的颜色将从蓝色变为红色。我该怎么做呢

任何帮助都将不胜感激。:)

比如:

public void mouseMoved(MouseEvent e) {
if(e.getSource()==app.p1){
    //get the color stored in the variable and set it as background
}

}
public void actionPerformed(ActionEvent e){
if(e.getSource()==b1)
    //get color and store it in like a variable
}
我无法直接执行此操作,因为p1将在不移动鼠标的情况下填充:

public void actionPerformed(ActionEvent e){
if(e.getSource()==b1)
    p1.setBackground(Color.RED);
}
实例变量:

String colorString = ""
事件处理程序:

public void mouseMoved(MouseEvent e) {
    if(e.getSource()==app.p1){
        app.p1.setBackground(Color.getColor(this.colorString));
    }
}
public void actionPerformed(ActionEvent e){
    if(e.getSource()==b1)
        this.colorString = e.getActionCommand();
    }
}

这将使用按钮上的文本确定颜色。请注意,如果字符串是无效的颜色名称,它将不起作用。

首先在类中定义一个标志

   public boolean isBtnClicked = false;
现在根据需要添加actionListener

   b1.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent ae) {
            isBtnClicked = true;
        }
    });
鼠标事件也是如此

P1.addMouseListener(new MouseListener(){
    @Override
    public void mouseEntered(MouseEvent e) {
        if(isBtnClicked)
        {
           b1.setBackground(Color.RED);
           isBtnClicked = false;
        }
    }
    //Other overriden methods
    ...
});

所以当鼠标移动时,你想调用
actionPerformed
,而不是
mouseMoved
?我想你需要的是mouseEnter,而不是MouseMoveNo。我是说。当我点击b1时,当鼠标移到p1上时,b1将给出p1的颜色。什么颜色?“给颜色”是什么意思?随机颜色?@NoIdeaForName我想他想要按钮上的文本来确定颜色,并且在鼠标移动到面板上之前不要更改面板。谢谢,我会试试这个并给你一些反馈。我试过了,但似乎不起作用。我可以理解代码行是如何工作的,但p1通过在其上移动鼠标而改变颜色(与框架颜色相同,而不是红色),即使不单击b1。你能给我一个替代方案吗?我知道了,我编辑了@NoIdeaForName的答案。谢谢你。gjI编辑了你的答案,终于成功了。非常感谢,兄弟。:)