请大家帮忙看看这个键盘的问题,谢谢。

songqicpp 2004-04-05 04:07:19
大家好:

我想问一下,如果我在一个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();
}

}
...全文
41 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhang21cnboy 2004-04-05
  • 打赏
  • 举报
回复
记得哦,再CanvasPanel初始化的时候

setFocusable(true);

zhang21cnboy 2004-04-05
  • 打赏
  • 举报
回复
大大的有。。。。
public void actionPerformed(ActionEvent e){
Object source;
source=e.getSource();
if(source==button){
CanvasPanel.this.requestFocusInWindow()
//此处该填什么,才能使CanvasPanel接受键盘消息?

v1.5.2 Build 1 版汉化说明 汉化人:王锦阳 汉化语言:简体中文 汉化版本:1.5.2 Build 1 EasyUI版本:1.5.2 汉化时间:2017年06月27日 个人博客:http://blog.sina.com.cn/richie696 好吧,这次更新迟了,因为工作实在太忙,加上最近在忙着买车的事情,所以已经顾不过来了,今天上easyui官网看已经发布1.5.2了,查了一下发现好久之前就更新了,好在主要是优化和BUG修复,没有什么新内容的加入,所以应该不会妨碍大家使用,另外由于官方会不定期的更新官方的文档,更新也不会通知我,所以我制作API的时候也只能根据我所在时间点的官方文档作为翻译基础,而文档发布之后更新的内容自然不会出现在中文API当中,所以这就需要大家的帮忙和反馈了,反馈方式有2种: 1.我的博客文章下直接回复; 2.加入Easy UI的使用交流群:189263358(本群欢迎那些愿意分享和帮助别人的人,如果只是那种一味只知道求帮助而从不帮助别人的人勿加群,否则加了也会被踢掉,谢谢配合。) 反馈后我会将新内容加入,我不可能每次更新文档都将中文API和英文官网上的文档做一次1:1的校验,这样工作量太大,我也没那么多时间,所以感谢大家来一起帮忙完善! jQuery EasyUI 1.5.2 版本更新内容 Bug(修复) • form:修复在调用“reset”方法的时候会导致input输入框初始值消失的BUG; • textbox:修复在调用“destroy”方法的时候无法清除字段标签的BUG; • datagrid:修复在不存在的行上调用“selectRow”方法的时候会导致记录无效行信息的BUG。 Improvement(改进) • datagrid:ctrl键选择支持Mac键盘; • datagrid:新增“scrollOnSelect”属性,可以让用户确定是否在选择行时自动滚动到对应行所在的位置; • combotree:添加“textField”属性; • combotreegrid:添加“textField”属性; • pagination:添加“showPageInfo”属性; • panel:添加“halign”和“titleDirection”属性,以允许用户自定义面板标题文字的对齐方式; • accordion:添加“halign”属性,以允许用户构建水平方向的分类标签; • tagbox:添加“required”属性,以允许用户将其用于验证指定值是否为空(译者注:该属性自validatebox继承而来,1.5.2版之前也有该属性只是设置以后无效)。

62,612

社区成员

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

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