日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JAVA飞机移动斜着走_通过键盘的能够使飞机上下左右八个方向移动,现在实现键盘监听时没有反应是怎么回事,哪里出错了?...

發布時間:2023/12/29 编程问答 34 豆豆

通過鍵盤的能夠使飛機上下左右八個方向移動,現在實現鍵盤監聽時沒有反應是怎么回事,哪里出錯了?

關注:93??答案:2??mip版

解決時間 2021-01-30 07:58

提問者雨份涼伴

2021-01-29 19:08

import javax.swing.JFrame;

public class MyFrame extends JFrame{

MyPanel mp=null;

public void lostFrame(){

mp=new MyPanel();

this.setTitle("雷霆戰機");

this.setLocation(10, 10);

this.setVisible(true);

this.setSize(500,500);

this.add(mp);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}

}

import java.awt.Graphics

; import java.awt.Image;

import java.awt.event.KeyAdapter;

import java.awt.event.KeyEvent;

importjavax.swing.JPanel;

//主窗口

public class PlaneGame extends MyFrame{

public static void main(String[] args) {

new MyFrame().lostFrame();

}

//重寫父類

public void lostFrame(){

super.lostFrame();

addKeyListener(new moveList());

}

//監聽事件

class moveList extends KeyAdapter{

public void keyPressed(KeyEvent e) {

System.out.println("按下"+e.getKeyChar());

}

public void keyReleased(KeyEvent e) { }

}

}

//繼承JPanel在面板上畫圖片

class MyPanel extends JPanel{

Image bg=ImageIcon.getImage("image/bg.gif");

Plane p=new Plane("image/enemy2.png",100,100);

public void paint(Graphics g){

g.drawImage(bg, 0, 0,null); p.draw(g); repaint();

}

}

import java.awt.Graphics;

import java.awt.Image;

* 戰機的屬性

public class Plane {

double y;

double x;

Image img;

double speed=0.1;

public Plane( String imgpath,double x, double y) {

this.x = x;

this.y = y;

this.img =ImageIcon.getImage(imgpath);

}

public void draw(Graphics g){

g.drawImage(img, (int)x, (int)y, null);

}

}

載入圖片的就不寫了,放不下了

最佳答案

二級知識專家包子女孩

2021-01-29 20:37

沒反應這種問題一般就是焦點問題了,你點擊一下游戲窗體,看看有沒有反應,如果沒有就requestFocus看看。

全部回答

1樓寄出個心動

2021-01-29 20:54

你的程序主要是因為MyPanel覆蓋了MyFrame,把監聽移到MyPanel上,并讓它獲得焦點(用this.requestFocus();語句),鍵盤控制就可以運行了.

另外,你的Image獲取方式有一點問題,我給你都改成new ImageIcon(imgpath).getImage()的形式了.

其它的改動都是小地方,你對照著原程序一看就知道了.

改完后,完整的程序如下:

//MyFrame.java文件

import javax.swing.JFrame;

public class MyFrame extends JFrame{

MyPanel mp=null;

public void lostFrame(){

mp=new MyPanel();

this.setTitle("雷霆戰機");

this.setLocation(10, 10);

this.setVisible(true);

this.setSize(500,500);

this.add(mp);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}

//PlaneGame.java文件

import java.awt.Graphics;

import java.awt.Image;

import java.awt.event.KeyAdapter;

import java.awt.event.KeyEvent;

import javax.swing.ImageIcon;

import javax.swing.JPanel;

//主窗口

public class PlaneGame{

public static void main(String[] args) {

new MyFrame().lostFrame();

}

}

//監聽事件

class moveList extends KeyAdapter{

public void keyPressed(KeyEvent e) {

System.out.println("按下"+e.getKeyChar());

}

public void keyReleased(KeyEvent e) { }

}

//繼承JPanel在面板上畫圖片

class MyPanel extends JPanel{

Image bg=new ImageIcon("image/bg.gif").getImage();

Plane p=new Plane("image/enemy2.png",100,100);

MyPanel(){

addKeyListener(new moveList());

}

public void paint(Graphics g){

g.drawImage(bg, 0, 0,null); p.draw(g); repaint();

this.requestFocus();

}

}

//Plane.java文件

import java.awt.Graphics;

import java.awt.Image;

import javax.swing.ImageIcon;

// 戰機的屬性

public class Plane {

int y;

int x;

Image img;

double speed=0.1;

public Plane( String imgpath,int x, int y) {

this.x = x;

this.y = y;

this.img =new ImageIcon(imgpath).getImage();

}

public void draw(Graphics g){

g.drawImage(img, x, y, null);

}

}

我要舉報

如以上問答內容為低俗/色情/暴力/不良/侵權的信息,可以點下面鏈接進行舉報,我們會做出相應處理,感謝你的支持!

→點此我要舉報以上信息!←

推薦資訊

大家都在看

總結

以上是生活随笔為你收集整理的JAVA飞机移动斜着走_通过键盘的能够使飞机上下左右八个方向移动,现在实现键盘监听时没有反应是怎么回事,哪里出错了?...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。