如何将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);
}
答案 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
...
});