关于键盘的一个问题。请大家帮忙看一下。

songqicpp 2004-04-05 04:01:32
大家好:

我想问一下,如果我在一个Frame中,添加了两个panel,其中一个panel被命名为controlpanel,在其中放置一个按钮,并将其放入
到Frame的South位置。而另外一个按钮被命名为canvaspanel,专门用来画图使用,放置在Frame的Center处,并且该canvaspanel也

实现了KeyListener接口,其中的keypressed办法是当按键为VK_RIGHT时就在canvaspanel中draw一个字符串,如

drawString("hello",20,20)。
那么,如果我点击了controlpanel中的按钮之后,是否有方法让canvaspanel接受键盘消息呢?请大家看一看。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class CanvasPanel extends JPanel implements KeyListener{

public CanvasPanel()
{
setBackground(Color.WHITE);
addKeyListener(this);
}

public void keyPressed(KeyEvent e)
{
Graphics g=getGraphics();
int keycode=e.getKeyCode();
if(keycode==KeyEvent.VK_RIGHT){
g.drawString("hello,yes",20,20);

}

}


class ControlPanel extends JPanel implements ActionListener{

private int button;

public ControlPanel()
{

button=new JButton("Start");
button.addActionListener(this);
this.add(button);
}

public void actionPerformed(ActionEvent e){
Object source;
source=e.getSource();
if(source==button){
//此处该填什么,才能使CanvasPanel接受键盘消息?






class MyFrame extends JFrame{

public MyFrame()
{
setTitle("Hello Title");
setSize(300,200);


Container contentpane = this.getContentPane();

contentpane.add(new ControlPanel(),"South");

contentpane.add(new CanvasPanel();,"Center");

}
}

public class KeyTest{

public static void main(String[] args)
{

JFrame frame=new MyFrame();
frame.show();
}

}

谢谢

...全文
20 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

62,614

社区成员

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

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