问一关于事件的问题。

Dekn 2003-10-30 03:04:20
我有一个JPanel,其中有30个JTextField,有没有方法,使得我只通过监听JPanel中的KeyEvent,并当各JTextField中发生keyEvent事件时,也能够进行处理。
...全文
33 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhanghuazhanghome 2003-11-04
  • 打赏
  • 举报
回复
经典解决啊!!!!!!!!!!!!
Dekn 2003-11-04
  • 打赏
  • 举报
回复
jPane1.getToolkit().getDefaultToolkit().addAWTEventListener(new AWTEventListener(){
public void eventDispatched(AWTEvent e) {
if (e instanceof KeyEvent) {
KeyEvent key = (KeyEvent) e;
System.err.println(key.getComponent());
System.err.println(key.getSource());
System.err.println(key.getKeyChar());
}
}
}, AWTEvent.KEY_EVENT_MASK);


呵呵,大家可以试试上面的方法,可以监听一个JPanel中所有的KEY事件,如果想监听其它事件,如Focus,只要将AWTEvent.KEY_EVENT_MASK 改为 FOCUS_EVENT_MASK

有兴趣的朋友可以进来讨论一个它的原理。
Dekn 2003-11-03
  • 打赏
  • 举报
回复
此总是我已经解决,由于今天在外面上网,明天回公司后,我会把代码贴上来与大家齐分享。
实现起来并不复杂。请大家继续关注。
kinzey34 2003-11-02
  • 打赏
  • 举报
回复
今天参考了下事件处理的资料,原来JAVA的事件处理模型有两种,我们一般
所用的是JDK1.1以后引入的委托(delegation)处理模型
(比如addKeyListener),每个组件注册自己的监听程序,在委托模型下
各个组件有自己的监听程序,即使把组件和其父容器注册到同个监听程序,
那么组件监听会优先于父容器监听,所以委托模型是无法完成楼主的要求的

在JDK1.0的时候,JAVA的事件处理是使用层次(hierarchal)模型,这种模型
主要基于容器和组件的包含关系:一个事件对象产生后,首先被传给直接
相关的组件,该组件可以对事件进行处理,也可以忽略事件而不进行处理。
如果组件未对事件进行处理,则AWT事件处理系统会将事件对象继续向上
传递给组件所在的容器。依此类推。
所以层次模型是可以完成楼主的要求的,不过层次模型用java.awt.Event类
和handleEvent()方法来完成事件处理,实现起来比委托模型要复杂的多
wxh512 2003-11-02
  • 打赏
  • 举报
回复
关注
事件着一块是我的弱点
wobelisk 2003-11-02
  • 打赏
  • 举报
回复
What's your purpose?
EventQueue can dispatch events. But why you should use it?
allen830826 2003-11-02
  • 打赏
  • 举报
回复
使jpanel和它的组件公用一个监听器不行吗??
zhanghuazhanghome 2003-11-02
  • 打赏
  • 举报
回复
关注
kinzey34 2003-11-01
  • 打赏
  • 举报
回复
我以前做过实验,如果JPanel和里面包含的JButton,JLable都设置了
ActionListener,那么鼠标移动到JLabel上操作时,鼠标事件全被JLabel
捕获,不能被JPanel所捕获,只有在JPanel的无组件区操作鼠标时,才
会被JPanel捕获,也就是说JPanel捕获不到它包含的组件上的动作

也许有方法可以把JPanel里的组件事件全部转移给JPanel,至少现在我还不会

你想那样做的原因是什么呢?如果你的JTextField用数组,那么设置监听只
需要个循环,监听处理可以通过 instanceof 判断是哪一种组件产生了键盘
事件
dominic2003 2003-11-01
  • 打赏
  • 举报
回复
可以,
.....................
if(e.getResouce==jTextField[1])
...................
ayayanvren 2003-11-01
  • 打赏
  • 举报
回复
这样的方法可以吗?当textfield内容变化时触发。
void jTextField1_inputMethodTextChanged(InputMethodEvent e) {
.....
}
iamwls 2003-10-30
  • 打赏
  • 举报
回复
up...

62,614

社区成员

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

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