Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.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 MouseListener不工作了_Java_Swing_Mouselistener - Fatal编程技术网

Java MouseListener不工作了

Java MouseListener不工作了,java,swing,mouselistener,Java,Swing,Mouselistener,我的鼠标坏了。 在我的代码中,在另一个JPanel(p)中有两个JPanel(p1和p2)。 还有两个按钮,分别是红色和绿色。我的代码应该像有人单击按钮一样工作,面板应该动态更改。 但不幸的是,当我运行程序时,“红色”和“绿色”按钮没有响应。这里我添加了我的代码。 多谢各位 package animat; import java.awt.Color; import java.awt.event.*; import javax.swing.*; public class Animat e

我的鼠标坏了。 在我的代码中,在另一个JPanel(p)中有两个JPanel(p1和p2)。 还有两个按钮,分别是红色和绿色。我的代码应该像有人单击按钮一样工作,面板应该动态更改。 但不幸的是,当我运行程序时,“红色”和“绿色”按钮没有响应。这里我添加了我的代码。 多谢各位

package animat;

import java.awt.Color;
import java.awt.event.*;

import javax.swing.*;



public class Animat extends JFrame{

Animat(){


JFrame j=new JFrame();

j.setSize(400,400);
j.setVisible(true);
JPanel p=new JPanel();

p.setSize(300,400);
p.setLayout(null);
p.setBackground(Color.BLACK);
p.setVisible(true);
j.add(p);

JPanel p1=new JPanel();
p1.setBounds(0,50,400,350);
p1.setBackground(Color.red);
p1.setVisible(true);
p.add(p1);

JPanel p2=new JPanel();
p2.setBounds(0,50,400,350);
p2.setBackground(Color.GREEN);
p2.setVisible(true);
p.add(p2);

JButton b=new JButton("RED");
b.setBounds(0,0,100,50);
b.setVisible(true);
p.add(b);

JButton b1=new JButton("GREEN");
b1.setBounds(100,0,100,50);
b1.setVisible(true);
p.add(b1);

b.addMouseListener(new MouseAdapter(){
public void MouseReleased(MouseEvent e){
p.removeAll();
p.repaint();
p.revalidate();
p.add(p1);
}
});

b1.addMouseListener(new MouseAdapter(){
public void MouseReleased(MouseEvent e){
p.removeAll();
p.repaint();
p.revalidate();
p.add(p2);
}
});
}
public static void main(String[] args) {
   new Animat(); 
   }

}您无意中没有覆盖您想要覆盖的功能。

使用此代码:

b1.addMouseListener(new MouseAdapter(){
   public void MouseReleased(MouseEvent e){
      p.removeAll();
      p.repaint();
      p.revalidate();
      p.add(p2);
   }
});
您正在添加一个新函数,而不是覆盖
mousererelease
函数。因此,它从未被称为。只需将函数名更改为以小写字母开头即可

注#1:您可以通过向函数添加
@Override
注释来验证我下面的陈述。IDE会告诉您事实上没有覆盖任何内容(由于输入错误)
注#2:您可能应该改用mousePressed。在这种情况下,它更符合逻辑(但您的代码也能正常工作)

使用鼠标侦听器对按钮进行安装。您可能需要使用actionListener。b、 addActionListener(新ActionListener(){})@谢谢你的建议。对于MouseListener,需要添加所有动作侦听器,如鼠标按下、鼠标单击、鼠标释放等,而鼠标适配器可以帮助我选择所需的动作。请按照其他评论者的建议尝试
ActionListener
。这就是我的意思。抱歉(我想检测画布上的点击)。@R.Suntjens,ActionListener仅用于点击按钮,该监听器不帮助应用“鼠标释放”。我想按钮应该工作时,我释放鼠标后,点击按钮。谢谢,非常感谢。你的建议奏效了!再次感谢:)“mouseReleased”而不是“MouseListener”起了作用。感谢您的快速响应。请使用中所示的。@Gergely Bacso 1。p、 重新验证();然后p.重新绘制();最后一行代码,2。它应该是鼠标,而不是鼠标。你介意阅读整个答案吗?我复制了他犯错误的代码,然后描述了你刚才指出的问题。