gpt4 book ai didi

java - 将 KeyListener 添加到 JLabel

转载 作者:行者123 更新时间:2023-11-29 07:19:21 25 4
gpt4 key购买 nike

我想让一个类从 JLabel 扩展并实现 KeyListener,但是 KeyListener 不起作用。现在 MouseListener 工作但 KeyListner 不工作,但为什么?另一个问题是当将 JFrame 的布局设置为 null 时,它不显示(图像汽车或汽车对象)。

    public class car extends JLabel implements KeyListener,MouseListener{
private ImageIcon imgico;//to set Image icon of car
public car(int car_num,boolean line1,Dimension position){
//car_num variable check which of Image of car load
//if line1 is true .line 1 else car load in line 2
super();
this.imgico = this.car_load(car_num, line1);
super.setIcon(this.imgico);
super.setVisible(true);
super.setSize(this.imgico.getIconWidth(),this.imgico.getIconHeight());
super.setLocation(position.width, position.height);
this.addKeyListener(this);
this.addMouseListener(this);

}
private ImageIcon car_load(int car_num,boolean line1){
//load image icon of car
if (car_num == 1 && line1 == true)
return (new ImageIcon("Images/cars/01a.PNG"));
else if (car_num == 1 && line1 == false)
return (new ImageIcon("Images/cars/01b.PNG"));
else if (car_num == 2 && line1 == true)
return (new ImageIcon("Images/cars/02a.PNG"));
else if (car_num == 2 && line1 == false)
return (new ImageIcon("Images/cars/02b.PNG"));
else if (car_num == 3 && line1 == true)
return (new ImageIcon("Images/cars/03a.PNG"));
else if (car_num == 3 && line1 == false)
return (new ImageIcon("Images/cars/03b.PNG"));
else if (car_num == 4 && line1 == true)
return (new ImageIcon("Images/cars/04a.PNG"));
else if (car_num == 4 && line1 == false)
return (new ImageIcon("Images/cars/04b.PNG"));
else if (car_num == 5 && line1 == true)
return (new ImageIcon("Images/cars/05a.PNG"));
else if (car_num == 5 && line1 == false)
return (new ImageIcon("Images/cars/05b.PNG"));
else if (car_num == 6 && line1 == true)
return (new ImageIcon("Images/cars/06a.PNG"));
else
return (new ImageIcon("Images/cars/06b.PNG"));
// by deafult its 06b
}
@Override
public void keyPressed(KeyEvent arg0) {
// TODO Auto-generated method stub
System.out.println(arg0.getKeyCode());
}
@Override
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub

}
@Override
public void keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub
System.out.println(arg0.getKeyCode());

}
@Override
public void mouseClicked(MouseEvent arg0) {
if (arg0.getSource() == this)
System.out.println("Hi");
}
@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub

}
@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub

}
@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub

}
@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub

}
}

主要内容:

    JFrame x = new JFrame();
x.setSize(500,500);
x.setVisible(true);
Dimension v = new Dimension(5,5);
car t =new car(1,true,v);
x.setLayout(null);
x.add(t);

最佳答案

我不认为 JLabel 可以获得焦点,因此永远不会触发 KeyEvent。看这个documentation了解更多详情。

关于java - 将 KeyListener 添加到 JLabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6594461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com