将ActionListener合并到java中的MouseMotionListener

时间:2013-09-13 12:33:44

标签: 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是一个JButton,表示“红色”,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);
}

2 个答案:

答案 0 :(得分:1)

实例变量:

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();
    }
}

这使用按钮上的文字来确定颜色。请注意,如果String是无效的颜色名称,则无效。

答案 1 :(得分:1)

首先在类

中定义一个标志
   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
    ...
});