请教一个关于requestFocus()的问题,急请高手解答

infomoon 2007-06-17 04:56:47
两个程序:
程序一:@@@@@@@@@@@@@@@@@@@@@@@@@@@@
import java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class AppWindow extends Frame
{
String keymsg="";
String mousemsg="";
int mouseX=30,mouseY=30;

public AppWindow()
{
addKeyListener(new MyKeyAdapter(this));
addMouseListener(new MyMouseAdapter(this));
addWindowListener(new MyWindowAdapter3());
}

public void paint(Graphics g)
{
g.drawString(keymsg,10,40);
g.drawString(mousemsg, mouseX, mouseY);
}

public static void main(String args[])
{
AppWindow appwin=new AppWindow();
appwin.setSize(new Dimension(300,200));
appwin.setVisible(true);
}
}


class MyKeyAdapter extends KeyAdapter
{
AppWindow appWindow;
public MyKeyAdapter(AppWindow app)
{
appWindow=app;
}

public void keyTyped(KeyEvent ke)
{
appWindow.keymsg+=ke.getKeyChar();
appWindow.repaint();
}
}

class MyMouseAdapter extends MouseAdapter
{
AppWindow appWindow;
public MyMouseAdapter(AppWindow app)
{
appWindow=app;
}

public void mousePressed(MouseEvent me)
{
appWindow.mouseX=me.getX();
appWindow.mouseY=me.getY();
appWindow.mousemsg="Mouse down at "+appWindow.mouseX+", "+appWindow.mouseY;
appWindow.repaint();
}
}

class MyWindowAdapter3 extends WindowAdapter
{
public void windowClosing(WindowEvent we)
{
System.exit(0);
}
}

程序二:@@@@@@@@@@@@@@@@@@@@@
import java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class KeyEvents extends Applet implements KeyListener
{
String msg="";
int X=10,Y=20;
public void init()
{
addKeyListener(this);
requestFocus();
}

public void keyPressed(KeyEvent ke)
{
showStatus("Key down");
int key=ke.getKeyCode();
switch(key)
{
case KeyEvent.VK_F1:
msg+="<F1>";
break;
case KeyEvent.VK_F2:
msg+="<F2>";
break;
case KeyEvent.VK_F3:
msg+="<F3>";
break;
case KeyEvent.VK_PAGE_DOWN:
msg+="<PgDn>";
break;
case KeyEvent.VK_PAGE_UP:
msg+="<PgUp>";
break;
case KeyEvent.VK_LEFT:
msg+="<Left arrow>";
break;
case KeyEvent.VK_RIGHT:
msg+="<Right arrow>";
break;
}
repaint();
}

public void keyReleased(KeyEvent ke)
{
showStatus("Key Up");
}

public void keyTyped(KeyEvent ke)
{
msg+=ke.getKeyChar();
repaint();
}

public void paint(Graphics g)
{
g.drawString(msg,X,Y);
}
}
麻烦问一下,为什么第一个程序在响应KeyEvent的时候没有用requestFocus()方法,而第二个程序却需要用哪?
第二个程序的applet运行出来后,不是当前的焦点吗?
...全文
235 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuokai 2007-06-18
  • 打赏
  • 举报
回复
-------------------------------------------------------
第二个程序的applet运行出来后,不是当前的焦点吗?
-------------------------------------------------------
確實,網頁是當前焦點,Applet只是嵌入,需要requestFocus
a_nuo 2007-06-18
  • 打赏
  • 举报
回复
顶了!

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧