十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
把你的代码按照你的意思改动了一下,应该可以满足你的要求:
公司主营业务:成都网站设计、成都网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联公司是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联公司推出呼图壁免费做网站回馈大家。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class KeyEventDemo extends JFrame implements ActionListener, KeyListener {
JTextField txt1;
JButton btnOK;
JPanel pnlMain;
public KeyEventDemo() {
pnlMain = new JPanel();
setContentPane(pnlMain);
txt1 = new JTextField(10);
btnOK = new JButton("确认");
txt1.addKeyListener(this); //应该是在 TextField 里添加键盘监听事件
btnOK.addActionListener(this);//在按钮上添加事件监听
pnlMain.setLayout(new BorderLayout());//添加布局器
pnlMain.add(txt1,BorderLayout.NORTH); //TextField 布局在上方
pnlMain.add(btnOK,BorderLayout.SOUTH); //Button 布局在下方
setTitle("好啊");
setSize(300, 200);
setVisible(true);//viersible() 函数应该放在最后
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public void keyTyped(KeyEvent e) { //6
char c = e.getKeyChar();
if (c == 'o') {
System.out.println("快捷键 " + e.getKeyChar() + " 按下" );
txt1.setText("收到,呵呵");
}else{
System.out.println("普通键 " + e.getKeyChar() + " 按下" );
}
}
public void actionPerformed(ActionEvent event){
System.out.println("按钮按下");
}
public void keyPressed(KeyEvent e) {} //函数要和接口 KeyListener 中定义的一摸一样
public void keyReleased(KeyEvent e) {} //函数要和接口 KeyListener 中定义的一摸一样
public static void main(String[] args) {
new KeyEventDemo();
}
}
额,抽象类其实就是定义了一些接口但又没有去实现的类,这些类定义了接口等它的子类来实现,如果它的子类没有实现这些接口,那么这些子类也是抽象类。抽象类是不能用 new 的方式产生的。
你似乎问错了,应该问接口是啥子东西,接口是。。。。一大堆的东西好难策清楚,看看下面的链接吧,会受益良多的:
this.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e){
if(e.getKeyCode()==KeyEvent.VK_RIGHT)
by = by+5;
else if(e.getKeyCode()==KeyEvent.VK_LEFT)
by = by-5;
}
});
这里这样改就ok了,不过你这个程序还有好多问题呢。
public void paint(Graphics g){
g.drawImage(img2,0,0,this);
g.drawImage(img3,by,490,this);
g.drawImage(img,580,260,this);
repaint();
}
这里面还要加一个repaint();方法,要不看不出移动的,问题太多改不完,你问的问题我算是解决了,嘿嘿,给分吧,有什么问题可以hi我。
”仅有一个焦点组件能够接收KeyEvent。要使一个组件成为焦点组件,需要将属性isFocusable设置为true。“
-----------------------------------------
Ps:小细节,上下弄反了。y轴向下递增。
-----------------------------------------------------
修改方法之一见注释
package baidu;
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
public class MyGraphics3 extends JFrame{
public static void main(String[] args){
new MyGraphics3(100,100);
}
public MyGraphics3(int x,int y){
MGraphics3 mg = new MGraphics3(x, y);
mg.setFocusable(true); //设置为焦点组件!!!
add(mg);
//add(new MGraphics3(x,y));
setVisible(true);
setLocation(500,350);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300,300);
}
}
class MGraphics3 extends JPanel{
private int x,y;
public MGraphics3(int x,int y){
this.x = x;
this.y = y;
addKeyListener(new Monitor3());
}
public void paint(Graphics g){
super.paint(g);
g.setColor(Color.BLUE);
g.fillOval(x,y,10,10);
}
public void move(int a,int b){
x += a;
y += b;
repaint();
}
class Monitor3 extends KeyAdapter{
public void keyPressed(KeyEvent e){
if(e.getKeyCode() == KeyEvent.VK_UP){
move(0,5);
}else if(e.getKeyCode() == KeyEvent.VK_DOWN){
move(0,-5);
}else if(e.getKeyCode() == KeyEvent.VK_RIGHT){
move(5,0);
}else if(e.getKeyCode() == KeyEvent.VK_LEFT){
move(-5,0);
}else{
System.out.println("ERROR!!!");
move(0,0);
}
}
}
}