我正在尝试为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.");
}
}
});
此选择区域适应我现在拥有的名称 - NonameSL。但如果名称更长或更短,选择区域将显然不同......
有没有办法获得精确的标签?我试过if(source.equals(player1))
(玩家1是标签),但是我将标签放在1,1中,我必须单击我在其中定义标签的精确点,X = 1,Y = 1。如何让鼠标监听器听标签?
答案 0 :(得分:1)
无需检查鼠标坐标是否在JLabel中。
您可以将监听器绑定到每个JLabel进程MyMouseListener.class
这样做:
您必须将MouseListener添加到每个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();
}
}