java键盘监听器添加_键盘监听器应该加到哪?

这个Java程序创建了一个名为Cage的类,它继承自Frame并实现了ActionListener接口。Cage类包含了多个Bird对象和一个Stone对象,用于显示和操作。键盘监听器被添加到Cage实例上,允许通过按键控制Stone对象的移动。用户可以点击'Quit', 'Start'或'Stop'按钮来控制游戏状态。当按下上下左右箭头键时,Stone对象会相应地移动。" 113730943,9564776,Python读取制表符分隔文件,"['Python编程', '文件处理', '数据读取', 'CSV']
摘要由CSDN通过智能技术生成

package HappyBird;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;

@SuppressWarnings("serial")

public class Cage extends Frame implements ActionListener{

private Button quit = new Button("Quit");

private Button start = new Button("Start");

private Button stop = new Button("Stop");

/*private Button fire = new Button("Fire");*/

private Bird birds[] = new Bird[10];

private Stone stones = null;

Image bird = Toolkit.getDefaultToolkit().getImage("bird.jpg");

Image stone = Toolkit.getDefaultToolkit().getImage("arrow.jpg");

public Cage(){

super("Cage with Birds");

setLayout (new FlowLayout());

add(quit); quit.addActionListener(this);

add(start); start.addActionListener(this);

add(stop); stop.addActionListener(this);

add(stones);stones.addKeyListener();

/*add(fire); fire.addActionListener(this);*/

validate(); setSize(600,600);

setVisible(true);

for(int i = 0;i

int x = (int)(getSize().width*Math.random());

int y = (int)(getSize().height*Math.random());

birds[i] = new Bird(this,x,y);

}

int y = (int)(getSize().height*Math.random());

int x = 1;

stones = new Stone(this,x, y);

}

public void actionPerformed(ActionEvent ae){

if(ae.getSource() == stop)

{

for(int i=0;i

birds[i].halt();

stones.halt();

}

if(ae.getSource() == start)

{

for(int i=0;i

int x=birds[i].x;

int y=birds[i].y;

birds[i].halt();

birds[i] = new Bird(this,birds[i].x,birds[i].y);

}

int x=stones.x;

int y=stones.y;

stones.halt();

stones=new Stone(this,x,y);

}

/*if(ae.getSource() == fire)

stones = new Stone(this,stones.x,stones.y);n++;*/

if(ae.getSource() == quit)

System.exit(0);

}

/*public void keyTyped(KeyEvent e) {

// TODO Auto-generated method stub

}

public void keyPressed(KeyEvent e){

// TODO Auto-generated method stub

int key = e.getKeyCode();

if(e.getKeyCode()==KeyEvent.VK_DOWN){

stones.y++;

stones.halt();

stones=new Stone(this,stones.x,stones.y);

}

else if(e.getKeyCode()==KeyEvent.VK_UP){

stones.y--;

}

else if(e.getKeyCode()==KeyEvent.VK_LEFT){

stones.x--;

}

else if(e.getKeyCode()==KeyEvent.VK_RIGHT){

stones.x++;

}

}

public void keyReleased(KeyEvent e) {

// TODO Auto-generated method stub

}*/

public void paint(Graphics g){

for(int i = 0;i

if(birds[i] !=null)

birds[i].draw(g);

stones.draw(g);

}

public static void main(String arg[]){

//TODO Auto-generated method stub @SuppressWarnings("unused")

Cage table = new Cage();

table.addKeyListener(table);

}

public Bird[] getBirds(){return birds;};

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中可以使用键盘监听器(Keyboard Listener)来监听键盘事件,以进行相关的操作。 首先需要实现KeyListener接口,该接口定义了三个方法:keyPressed、keyReleased和keyTyped,分别对应按键按下、按键松开和按键按下后松开之前的事件。 例如,以下代码实现了一个简单的键盘监听器: ``` import java.awt.event.KeyEvent; import java.awt.event.KeyListener; public class MyKeyListener implements KeyListener { public void keyPressed(KeyEvent event) { System.out.println("Key Pressed: " + event.getKeyChar()); } public void keyReleased(KeyEvent event) { System.out.println("Key Released: " + event.getKeyChar()); } public void keyTyped(KeyEvent event) { System.out.println("Key Typed: " + event.getKeyChar()); } } ``` 在上面的代码中,我们实现了KeyListener接口,并重写了三个方法。在keyPressed和keyReleased方法中,我们输出了按下和松开的键字符;在keyTyped方法中,我们输出了按键字符。 接着,我们需要将该键盘监听器添加到相应的组件上,例如JFrame: ``` import javax.swing.JFrame; public class MyFrame extends JFrame { public MyFrame() { this.addKeyListener(new MyKeyListener()); this.setSize(400, 400); this.setVisible(true); } public static void main(String[] args) { new MyFrame(); } } ``` 在上面的代码中,我们创建了一个继承自JFrame的MyFrame类,并在构造函数中将MyKeyListener添加到MyFrame上。最后,我们创建了一个MyFrame对象并显示它。 这样,当用户在MyFrame中按下、松开或输入键时,MyKeyListener中相应的方法就会被调用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值