去掉TextField后的程序,這個(gè)程序是要用到repaint()的,具體請(qǐng)參考程序中的注釋位置:
成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比溫泉網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式溫泉網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋溫泉地區(qū)。費(fèi)用合理售后完善,十余年實(shí)體公司更值得信賴。
import java.awt.*;
import java.awt.event.*;
class mCar extends Frame{
Color redColor;
int xl=80,yl=80,speed=10,step=5;/*********注意這里***********/
public mCar(){
addKeyListener(new KeyAdapter(){ /*********注意這里***********/
public void keyPressed(KeyEvent e){
if(e.getKeyCode()== KeyEvent.VK_UP){
System.out.println("\n Go Up");
yl-=speed;/*********注意這里***********/
}
else if(e.getKeyCode()== KeyEvent.VK_DOWN){
System.out.println("\n Go Down");
yl+=speed;/*********注意這里***********/
}
else if(e.getKeyCode()== KeyEvent.VK_LEFT){
System.out.println("\n Go Left");
xl-=speed;/*********注意這里***********/
}
else if(e.getKeyCode()== KeyEvent.VK_RIGHT){
System.out.println("\n Go Right");
xl+=speed;/*********注意這里***********/
}
else if(e.getKeyCode()== KeyEvent.VK_F1){
speed+=step;/*********注意這里***********/
System.out.println("\n Speed Up");
}
else if(e.getKeyCode()== KeyEvent.VK_F2){
System.out.println("\n Speed Down");
speed-=step;/*********注意這里***********/
}
else
System.out.println(e.getKeyChar());
repaint();/*********注意這里***********/
}
}
);
setSize(400,300);
setVisible(true);
setLocation(400,200);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
dispose();
System.exit(0);
}
}
);
}
public void paint(Graphics g){
g.setColor(Color.GREEN);
g.fillRect(xl, yl, 40, 40);/*********注意這里***********/
}
}
public class miniCar {
public static void main(String[] args){
new mCar();
}
}
在你的
jFrame
窗體上添加鍵盤監(jiān)聽事件,
在監(jiān)聽事件里添加幾個(gè)判斷,
keyCode
分別為
"上,下,左,右"
時(shí),
修改你要移動(dòng)的物體的坐標(biāo)位置,就可以達(dá)到按鍵盤控制物體移動(dòng)了.
新的Timer()的日程安排(新的TimerTask的(){
公共無效的run(){
System.exit(0);
}},5000),5秒自動(dòng)運(yùn)行,運(yùn)行的內(nèi)容setRepeats (未來),5秒一個(gè)周期自動(dòng)運(yùn)行。程序的輸入方法,這兩者沒有什么區(qū)別
如果是其他的方式,System.exit(0)直接終止程序,即使后面的代碼不會(huì)被執(zhí)行
而返回返回到調(diào)用的方法的地方,如果有代碼繼續(xù)執(zhí)行
但對(duì)于在ANDROID線程一些限制的安全性??梢允褂孟旅娴姆椒?。最后的處理程序處理程序=新的Handler(){
無效的handleMessage(消息msg){
開關(guān)(msg.what){
案例1:
/ /加執(zhí)行方法。
突破;
}
super.handleMessage(MSG);
}
};
imerTask任務(wù),新的TimerTask (){
公共無效的run(){
消息消息消息();
message.what = 1;
handler.sendMessage(消息);
}
};
定時(shí)器定時(shí)器=新的Timer();
timer.schedule(任務(wù)和5000);/ / 5秒延遲
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Test extends JFrame implements KeyListener {
private static final long serialVersionUID = 1L;
private JLabel jl = new JLabel("java程序設(shè)計(jì)");
private static final int STEP = 10;//設(shè)置移動(dòng)的幅度
public static void main(String[] args) {
new Test().launchFrame();
}
public void launchFrame() {
this.add(jl);
this.addKeyListener(this);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setBounds(300,200,600,400);
this.setVisible(true);
}
public void keyPressed(KeyEvent e) {//按一個(gè)鍵,可以連續(xù)按
key(e);
}
public void keyReleased(KeyEvent e) {//按下放開一個(gè)鍵
}
public void keyTyped(KeyEvent e) {//擊一下鍵
}
public void key(KeyEvent e) {//可以將這個(gè)函數(shù)添加到上面的三個(gè)方法里
switch(e.getKeyCode()) {
case KeyEvent.VK_LEFT ://左箭頭
jl.setLocation(jl.getLocation().x - STEP, jl.getLocation().y);
break;
case KeyEvent.VK_RIGHT ://右箭頭
jl.setLocation(jl.getLocation().x + STEP, jl.getLocation().y);
break;
case KeyEvent.VK_UP ://上箭頭
jl.setLocation(jl.getLocation().x, jl.getLocation().y - STEP);
break;
case KeyEvent.VK_DOWN ://下箭頭
jl.setLocation(jl.getLocation().x, jl.getLocation().y + STEP);
break;
}
}
}
另外提醒一下樓上的,應(yīng)該給JFrame添加KeyListener
你這只有坐標(biāo)值改變啊,沒有更新畫布,在herox=herox-10下面加上一句jhero.setX(herox);