用JAVA创建一个窗口,里面有一个物体,我要通过键盘的方向键来控制物体做出相应的移动,应该怎么做?望各位大侠指点!能否给出一小段具体的代码?
解决方案 »
- 为什么MouseListener不能捕获用户所有的点击?
- Java面试题-StringBuilder和StringBuffer的区别
- 剪刀石头布的游戏,哪个高手帮帮看能优化不??
- 哪些是做一个简单项目所要掌握的东西?
- JSP和JAVA的区别
- 如何用jdbc实现授权表的访问
- 我一个伙计考过SCJP一个多月了,怎么SCJP的证书还没有来呀?到哪里问去呀?
- java菜鸟求帮助
- 一个新手正则匹配问题
- 线程对运算密集型任务是如何提速的?
- 我的bean构造函数里调用一个ini文件,在bean里测试没问题,但是在jsp里面调用bean,就说这个文件找不 到,这个INI文件在jsp调用时应该放
- Redhat8+JSP乱码
比如你的物品是一个圆,当你输入的字符为方向键右时圆心的X坐标+1,方向为右X坐标-1,类似的向上和向下分别对应Y坐标加1和减1。
*编写小游戏,用键盘控制物体移动
*/import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.geom.*;public class Game
{
public static void main(String args[])
{
GameFrame frame = new GameFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}class GameFrame extends JFrame
{
private final int WIDTH = 500;
private final int HEIGHT = 400;
private GamePanel panel; public GameFrame()
{
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screenSize = kit.getScreenSize();
int width = screenSize.width;
int height = screenSize.height;
int x = (width - WIDTH)/2;
int y = (height - HEIGHT)/2;
setLocation(x, y);
setSize(WIDTH, HEIGHT);
setTitle("小游戏");
setResizable(false); Container con = getContentPane();
panel = new GamePanel();
con.add(panel);
panel.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent e)
{
int a = 0;
if(e.KEY_PRESSED == e.VK_LEFT)
a = -1;
panel.setPlace(a);
}
});
}
}class GamePanel extends JPanel
{
private double x = 50;
private double y = 50;
private final double WIDTH = 30;
private final double HEIGHT = 30; public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g; Ellipse2D circle = new Ellipse2D.Double(x, y, WIDTH, HEIGHT);
g2.draw(circle);
g2.setPaint(Color.red);
g2.fill(circle);
} public void setPlace(int a)
{
x = x + a;
repaint();
}
}
我这段程序中,为什么按下方向键左,圆形不会向左移动?请问问题出在哪里?addKeyListener方法应该加在哪个组件上?
......
block.setLoation(x,y);
con.validate;
}
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.geom.*;public class Game {
public static void main(String args[]) {
GameFrame frame = new GameFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}class GameFrame extends JFrame {
private final int WIDTH = 500; private final int HEIGHT = 400; private GamePanel panel; public GameFrame() {
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screenSize = kit.getScreenSize();
int width = screenSize.width;
int height = screenSize.height;
int x = (width - WIDTH) / 2;
int y = (height - HEIGHT) / 2;
setLocation(x, y);
setSize(WIDTH, HEIGHT);
setTitle("小游戏");
setResizable(false);
requestFocus();
Container con = getContentPane();
panel = new GamePanel();
con.add(panel); addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
int a = 0;
if (e.getKeyCode() == KeyEvent.VK_LEFT) {
a = -10;
panel.setPlace(a); }
}
});
}
}class GamePanel extends JPanel {
private int x = 50; private int y = 50; private final double WIDTH = 30; private final double HEIGHT = 30; public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g; Ellipse2D circle = new Ellipse2D.Double(x, y, WIDTH, HEIGHT);
g2.draw(circle);
g2.setPaint(Color.red);
g2.fill(circle);
} public void setPlace(int a) {
x = x + a;
repaint();
}}