我想问下。
有什么办法 能让整个JFRAME里所有的组件 都能监听到的事件?我在JFRAME里的一个JBUTTON上添加个监听事件
我运行 可以实现
我在JFRAME里在添加一个 JBUTTON上添加事件
第一个JBUTTON事件则运行不了我想问下 有没有什么办法?不管焦点在哪 都能执行那个键盘监听事件?
有什么办法 能让整个JFRAME里所有的组件 都能监听到的事件?我在JFRAME里的一个JBUTTON上添加个监听事件
我运行 可以实现
我在JFRAME里在添加一个 JBUTTON上添加事件
第一个JBUTTON事件则运行不了我想问下 有没有什么办法?不管焦点在哪 都能执行那个键盘监听事件?
比如
public void actionPerformed(ActionEvent e){
if(e.getSource()==btn1||btn2....){
......
}
然后JFRAME上的所有组件都add这个Listener
你说让位把每个都实现addListener
那垃圾代码不就N多吗?
然后在那个Listener中去实现你想要的功能
JFRAME上的组件只需要addListener(this)就好了
总不能不加监听就要响应事件吧?
然后在 所有的组件上加上 addListener(this)
就能实现所有的事件了?我感觉可行。。谢谢。。分给你了
you can do as this simply.void addListenerToAll(Container c) {
try {
Method m = c.getClass().getDeclaredMethod("addActionListener", new Class[]{ActionListener.class});
if (m != null) {
c.addActionListener(your_listener);
}
Compoents[] cc = c.getComponents();
for (int i=0; i<cc.length; i++) {
if (cc[i] instancof Container) {
addListenerToAll(cc[i]);
continue;
}
m = cc[i].getClass().getDeclaredMethod("addActionListener", new Class[]{ActionListener.class});
if (m != null) {
cc[i].addActionListener(your_listener);
}
}
} catch (Throwable e) {
e.printStackTrace();
}
}call the method as this
addListenerToAll(your_frame);
你的那个方法。。我做不了
能麻烦你写个例子吗?