Java 如何使用MouseStener单击JLabel?

Java 如何使用MouseStener单击JLabel?,java,label,jlabel,mouselistener,Java,Label,Jlabel,Mouselistener,我正在尝试为minecraft制作这个程序,现在我才刚刚开始。我想,如果你点击一个标签,它会检查它是什么标签,并会做一些事情 addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent me) { System.out.println(me.getX()+", "+me.getY()+"."); Object source = me.

我正在尝试为minecraft制作这个程序,现在我才刚刚开始。我想,如果你点击一个标签,它会检查它是什么标签,并会做一些事情

addMouseListener(new MouseAdapter() { 
          public void mousePressed(MouseEvent me) { 

            System.out.println(me.getX()+", "+me.getY()+"."); 
            Object source = me.getSource();
            int intx =  me.getX();
            int inty = me.getY();

            if(me.getX()>=1 && me.getY()>=1 && me.getX()<=70 && me.getY()<=45){
                permissionsframe.setLocation(810,250);
                System.out.println(p1p.length);
                permissionsframe.pack();
                permissionsframe.setSize(200, 200);
                permissionsframe.setVisible(true);
                JLabel playerperms = new JLabel("Player "+p1s+" has "+p1p.length+" permissions.");
                playerperms.setBounds(1, 1, 150, 150);
                permissionsframe.add(playerperms);
                System.out.println("You chose "+player1.getText()+".");
            }
            else{
                System.out.println("You did not click any label.");
            }

        }
    });
addMouseListener(新的MouseAdapter(){
公共无效鼠标按下(MouseEvent me){
System.out.println(me.getX()+”,“+me.getY()+”;
Object source=me.getSource();
int intx=me.getX();
int inty=me.getY();

如果(me.getX()>=1&&me.getY()>=1&&me.getX(),则无需检查鼠标坐标是否在JLabel内。 您可以将侦听器绑定到
MyMouseListener.class

为此:

您必须将鼠标侦听器添加到每个JLabel:

MyMouseListener myMouseListener = new MyMouseListener();

label01.setName("name01");
label01.addMouseListener(myMouseListener);

label02.setName("name02");
label02.addMouseListener(myMouseListener);
要识别JLabel,可以执行以下操作:

class MyMouseListener extends MouseAdapter {

    @Override
    public void mouseClicked(MouseEvent e) {
         JLabel l = (JLabel) e.getSource();

         if(l.getName().equals("name01"))
             doSomething01();
         else if(l.getName().equals("name02"))
             doSomething02();
    }
}

无需检查鼠标坐标是否在JLabel内。 您可以将侦听器绑定到
MyMouseListener.class

为此:

您必须将鼠标侦听器添加到每个JLabel:

MyMouseListener myMouseListener = new MyMouseListener();

label01.setName("name01");
label01.addMouseListener(myMouseListener);

label02.setName("name02");
label02.addMouseListener(myMouseListener);
要识别JLabel,可以执行以下操作:

class MyMouseListener extends MouseAdapter {

    @Override
    public void mouseClicked(MouseEvent e) {
         JLabel l = (JLabel) e.getSource();

         if(l.getName().equals("name01"))
             doSomething01();
         else if(l.getName().equals("name02"))
             doSomething02();
    }
}

我的代码是:当我运行代码时,它会等待几秒钟,然后出现这个错误:(对于stackoverflow来说太长了,它在pastebin中):如果您想这样做,最好使用命令模式来执行操作。这不起作用。我的代码是:当我运行代码时,它会等待几秒钟,然后出现此错误:(对于stackoverflow来说太长了,它在pastebin中):如果要这样做,最好使用命令模式执行操作。