Java MouseListener不工作了
我的鼠标坏了。 在我的代码中,在另一个JPanel(p)中有两个JPanel(p1和p2)。 还有两个按钮,分别是红色和绿色。我的代码应该像有人单击按钮一样工作,面板应该动态更改。 但不幸的是,当我运行程序时,“红色”和“绿色”按钮没有响应。这里我添加了我的代码。 多谢各位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
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。它应该是鼠标,而不是鼠标。你介意阅读整个答案吗?我复制了他犯错误的代码,然后描述了你刚才指出的问题。