2

我怎样才能合并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);
}
4

2 回答 2

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

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

于 2013-09-13T12:40:57.210 回答
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
    ...
});
于 2013-09-13T12:41:32.933 回答