import java.awt.*;
import java.awt.event.*;public class TankClient {
public static void main(String[] agrs) {
new MyFrame();
}
}class MyFrame extends Frame {
Point point = new Point(150, 150); public MyFrame() {
MyFrame tx = null;
// Point point = new Point(150, 150); // public void launchFrame(){
setBounds(150, 50, 800, 600);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
setVisible(false);
System.exit(0);
}
});
addKeyListener(new MyKeyListener(this));
setBackground(Color.gray);
setResizable(false);
setVisible(true);
} class MyKeyListener extends KeyAdapter {
MyFrame tx = null; public MyKeyListener(MyFrame e) {
tx = e;
}
//就是这里按 上下左右键移动圆 但是当我向左和向右移动的时候总是出界! 怎么改 !
public void keyPressed(KeyEvent e) {
double x = point.getX() ;
double y = point.getY() ;
if (e.getKeyCode() == e.VK_UP && y >= 30.0) {
x = point.getX();
y = point.getY() - 5.0;
}
if (e.getKeyCode() == e.VK_DOWN && y <= 600.0) {
x = point.getX();
y = point.getY() + 5.0;
}
if (e.getKeyCode() == e.VK_LEFT && x >= 10.0) {
x = point.getX() - 5.0;
y = point.getY();
}
if (e.getKeyCode() == e.VK_RIGHT && y <= 800.0) {
x = point.getX() + 5.0;
y = point.getY();
} point.setLocation(x, y);
tx.repaint();
}
} public void paint(Graphics g) {
Color col = g.getColor();
g.setColor(Color.blue);
g.fillOval((int) point.getX(), (int) point.getY(), 50, 50);
g.setColor(col);
}
}
import java.awt.event.*;public class TankClient {
public static void main(String[] agrs) {
new MyFrame();
}
}class MyFrame extends Frame {
Point point = new Point(150, 150); public MyFrame() {
MyFrame tx = null;
// Point point = new Point(150, 150); // public void launchFrame(){
setBounds(150, 50, 800, 600);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
setVisible(false);
System.exit(0);
}
});
addKeyListener(new MyKeyListener(this));
setBackground(Color.gray);
setResizable(false);
setVisible(true);
} class MyKeyListener extends KeyAdapter {
MyFrame tx = null; public MyKeyListener(MyFrame e) {
tx = e;
}
//就是这里按 上下左右键移动圆 但是当我向左和向右移动的时候总是出界! 怎么改 !
public void keyPressed(KeyEvent e) {
double x = point.getX() ;
double y = point.getY() ;
if (e.getKeyCode() == e.VK_UP && y >= 30.0) {
x = point.getX();
y = point.getY() - 5.0;
}
if (e.getKeyCode() == e.VK_DOWN && y <= 600.0) {
x = point.getX();
y = point.getY() + 5.0;
}
if (e.getKeyCode() == e.VK_LEFT && x >= 10.0) {
x = point.getX() - 5.0;
y = point.getY();
}
if (e.getKeyCode() == e.VK_RIGHT && y <= 800.0) {
x = point.getX() + 5.0;
y = point.getY();
} point.setLocation(x, y);
tx.repaint();
}
} public void paint(Graphics g) {
Color col = g.getColor();
g.setColor(Color.blue);
g.fillOval((int) point.getX(), (int) point.getY(), 50, 50);
g.setColor(col);
}
}
楼主【yangyongjie81】截止到2008-07-14 18:17:39的历史汇总数据(不包括此帖):
发帖的总数量:20 发帖的总分数:620 每贴平均分数:31
回帖的总数量:9 得分贴总数量:0 回帖的得分率:0%
结贴的总数量:20 结贴的总分数:620
无满意结贴数:0 无满意结贴分:0
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:100.00%
无满意结贴率:0.00 % 无满意结分率:0.00 %
敬礼!
public void keyPressed(KeyEvent e) {
double x = point.getX();
double y = point.getY();
if (e.getKeyCode() == e.VK_UP && y >= 30.0) {
y = y - 5.0;
}
if (e.getKeyCode() == e.VK_DOWN && y <= 540.0) {
y = y + 5.0;
}
if (e.getKeyCode() == e.VK_LEFT && x >= 10.0) {
x = x - 5.0;
}
if (e.getKeyCode() == e.VK_RIGHT && x <= 740.0) {
x = x + 5.0;
}
point.setLocation(x, y);
tx.repaint();
}
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TankClient { public static void main(String[] agrs) {
new MyFrame();
}}
class MyFrame extends Frame { public static final int TANK_SIZE = 50; //坦克大小
public static final int TANK_STEP = 5; //坦克移动步长 private Point point = new Point(150, 150); public MyFrame() {
MyFrame tx = null;
// Point point = new Point(150, 150);
// public void launchFrame(){
setBounds(150, 50, 800, 600);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
setVisible(false);
System.exit(0);
}
});
addKeyListener(new MyKeyListener(this));
setBackground(Color.gray);
setResizable(false);
setVisible(true);
} class MyKeyListener extends KeyAdapter { private MyFrame tx = null; public MyKeyListener(MyFrame e) {
tx = e;
} // 就是这里按 上下左右键移动圆 但是当我向左和向右移动的时候总是出界! 怎么改 !
public void keyPressed(KeyEvent e) {
double x = point.getX();
double y = point.getY();
if (e.getKeyCode() == KeyEvent.VK_UP && y >= MyFrame.this.getInsets().top) {
x = point.getX();
y = point.getY() - TANK_STEP;
}
if (e.getKeyCode() == KeyEvent.VK_DOWN && y <= MyFrame.this.getHeight() - MyFrame.this.getInsets().bottom - TANK_SIZE) {
x = point.getX();
y = point.getY() + TANK_STEP;
}
if (e.getKeyCode() == KeyEvent.VK_LEFT && x >= MyFrame.this.getInsets().left) {
x = point.getX() - TANK_STEP;
y = point.getY();
}
if (e.getKeyCode() == KeyEvent.VK_RIGHT && x <= MyFrame.this.getWidth() - MyFrame.this.getInsets().right - TANK_SIZE) {
x = point.getX() + TANK_STEP;
y = point.getY();
}
point.setLocation(x, y);
tx.repaint();
} } public void paint(Graphics g) {
Color col = g.getColor();
g.setColor(Color.blue);
g.fillOval((int)point.getX(), (int)point.getY(), TANK_SIZE, TANK_SIZE);
g.setColor(col);
}}这样改无论你的窗口多大,坦克都不会溜达出窗口了。