在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编辑了你的答案,终于成功了。非常感谢,兄弟。:)