JAVA中系统如何获取事件源? 在JAVA中系统如何获取事件源?比如,我添加一个button,并注册Listener。当我按下这个button,系统怎么知道用户按下了这个button,而不是按下其它的button或是进行了别的操作呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这是jvm处理的,肯定有键值对应的类似hashmap之类的进行存储。 比如你实现了ActionListener接口,那么必须实现actionPerformed(ActionEvent e)方法,通过e.getSource()得到事件源. 如果是鼠标触发的,GUI系统会获取鼠标所在位置的component如果是Enter键触发的,GUI系统会获取当前拥有焦点的compoent如果是其他快捷键触发的,GUI系统会获取该快捷键对应的component import java.awt.*;import java.awt.event.*;import javax.swing.*;public class JCheckBox2 implements ItemListener{ JFrame f = null; JCheckBox c4 = null; JCheckBox c5 = null; JCheckBox2(){ f = new JFrame("JCheckBox"); Container contentPane = f.getContentPane(); contentPane.setLayout(new GridLayout(2,1)); JPanel p1 = new JPanel(); p1.setLayout(new GridLayout(1,3)); p1.setBorder(BorderFactory.createTitledBorder("您最喜欢哪一家速食店呢?")); JCheckBox c1 = new JCheckBox("麦当劳"); JCheckBox c2 = new JCheckBox("肯德鸡"); JCheckBox c3 = new JCheckBox("21世纪"); p1.add(c1); p1.add(c2); p1.add(c3); JPanel p2 = new JPanel(); p2.setLayout(new GridLayout(2,1)); p2.setBorder(BorderFactory.createTitledBorder("您喜欢哪种程序语言,喜欢的请打勾:")); c4 = new JCheckBox("JAVA",new ImageIcon(".\\icons\\x.jpg")); c5 = new JCheckBox("C++",new ImageIcon(".\\icons\\x.jpg")); c4.addItemListener(this);///////////////////////////////////////////指明了是c4 c5.addItemListener(this); p2.add(c4); p2.add(c5); contentPane.add(p1); contentPane.add(p2); f.pack(); f.show(); f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); } public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == e.SELECTED) { if(e.getSource() == c4) c4.setIcon(new ImageIcon("D:\\gif\\1.gif")); if(e.getSource() == c5) c5.setIcon(new ImageIcon("D:\\gif\\1.gif")); } else { if(e.getSource() == c4) c4.setIcon(new ImageIcon("D:\\gif\\1.gif")); if(e.getSource() == c5) c5.setIcon(new ImageIcon("D:\\gif\\1.gif")); } } public static void main(String args[]) { new JCheckBox2(); }} 其实这个问题很好解决,不知道你用的是什么开发软件,如果用的是netbeans,这些东西都是自动生成的,那些按纽的事件代码都是自动天家的,比较方便``` 用e.getSource().equals(你要确定的组件)或用e.getActionCommand().equals(要确定的组件名) return的意思?用法?详解?求教 LayoutManager的问题!(诸位兄台,大家捧捧场吧!) 关于String的问题 [求助]请高手们帮忙 请问怎么有没有可能把java程序编译成本地机器代码? Winhelp格式的JDK文档,更易阅读和查找,很棒,要的进来 从hello world到J2EE的学习轨迹??/ LDAP问题在线等待 JBuilder那个版本比较好啊 请问JCreator在那里可以下载? 我写的推断出张老师的生日是哪一天的答案!大家看看!~~~结帖咯~1 java 如何实现程序的自动更新,有例子最好了
通过e.getSource()得到事件源.
如果是Enter键触发的,GUI系统会获取当前拥有焦点的compoent
如果是其他快捷键触发的,GUI系统会获取该快捷键对应的component
import java.awt.event.*;
import javax.swing.*;public class JCheckBox2 implements ItemListener
{
JFrame f = null;
JCheckBox c4 = null;
JCheckBox c5 = null;
JCheckBox2(){
f = new JFrame("JCheckBox");
Container contentPane = f.getContentPane();
contentPane.setLayout(new GridLayout(2,1));
JPanel p1 = new JPanel();
p1.setLayout(new GridLayout(1,3));
p1.setBorder(BorderFactory.createTitledBorder("您最喜欢哪一家速食店呢?"));
JCheckBox c1 = new JCheckBox("麦当劳");
JCheckBox c2 = new JCheckBox("肯德鸡");
JCheckBox c3 = new JCheckBox("21世纪");
p1.add(c1);
p1.add(c2);
p1.add(c3);
JPanel p2 = new JPanel();
p2.setLayout(new GridLayout(2,1));
p2.setBorder(BorderFactory.createTitledBorder("您喜欢哪种程序语言,喜欢的请打勾:"));
c4 = new JCheckBox("JAVA",new ImageIcon(".\\icons\\x.jpg"));
c5 = new JCheckBox("C++",new ImageIcon(".\\icons\\x.jpg"));
c4.addItemListener(this);///////////////////////////////////////////指明了是c4
c5.addItemListener(this);
p2.add(c4);
p2.add(c5);
contentPane.add(p1);
contentPane.add(p2);
f.pack();
f.show();
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
public void itemStateChanged(ItemEvent e)
{
if (e.getStateChange() == e.SELECTED)
{
if(e.getSource() == c4)
c4.setIcon(new ImageIcon("D:\\gif\\1.gif"));
if(e.getSource() == c5)
c5.setIcon(new ImageIcon("D:\\gif\\1.gif"));
}
else
{
if(e.getSource() == c4)
c4.setIcon(new ImageIcon("D:\\gif\\1.gif"));
if(e.getSource() == c5)
c5.setIcon(new ImageIcon("D:\\gif\\1.gif"));
}
}
public static void main(String args[])
{
new JCheckBox2();
}
}
或用e.getActionCommand().equals(要确定的组件名)