想不明白,关于事件处理!

bluezoo 2005-08-26 08:34:15
这几天在学事件处理,学到事件队列时写了下面一个程序。
程序大概就是:
有两个按钮和一个文体框
点击button1,文体框就显示信息。
点击button2,触发button1的“点击”事件。
但问题就在这里:点击button2后没有反应!

麻烦大家帮我找找原因!
//=====================================================
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class EventTestFrame extends JFrame implements ActionListener
{
public static int counter;
JButton button1;
JButton button2;
JTextField textField;
EventQueue queue;

public EventTestFrame()
{
setBounds(300,300,300,150);
counter = 0;
button1 = new JButton("button1");
button2 = new JButton("button2");
textField = new JTextField();
getContentPane().add(button1,BorderLayout.NORTH);
getContentPane().add(button2,BorderLayout.SOUTH);
getContentPane().add(textField,BorderLayout.CENTER);

queue = Toolkit.getDefaultToolkit().getSystemEventQueue();
//取得事件队列

button1.addActionListener(this);
button2.addActionListener(new MyListener());
}

public void actionPerformed(ActionEvent e)
{
counter++;
textField.setText(String.valueOf(counter)
+ " ,source:" + e.getActionCommand());
}

private class MyListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
queue.postEvent(new ActionEvent(button1,
ActionEvent.ACTION_PERFORMED,"button2"));
/*想通过点击button2来触发button1的点击事件*/
}
}
}


public class MyPostEventTest
{
public static void main(String[] args)
{
EventTestFrame frame = new EventTestFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}
...全文
145 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
bluezoo 2005-08-27
  • 打赏
  • 举报
回复
up一下
mituzhishi 2005-08-26
  • 打赏
  • 举报
回复
我明白你的意思,但不明白为什么不能触发button1的事件
mituzhishi 2005-08-26
  • 打赏
  • 举报
回复
搞了好久没搞明白;

关注。
bluezoo 2005-08-26
  • 打赏
  • 举报
回复
至于能不能用if(e.getSource == button2),
我想说的就是
我不是想知道button2是不是被点击
而是想知道如何在点击button2的时候,我要触发button1的ActionEvent,使button1执行相应的代码
用这一句:
queue.postEvent(new ActionEvent(button1,ActionEvent.ACTION_PERFORMED,"button2"));
为什么会不行呢?搞了大半天,没搞懂!

不知大家是否明白我的意思
bluezoo 2005-08-26
  • 打赏
  • 举报
回复
to believefym(feng):

大哥,这个是两个监听器,
queue.postEvent(new ActionEvent(button1, ActionEvent.ACTION_PERFORMED,"button2")); 已经有button1了
====================================================================
不太明白你的意思,能否解释一下!
congliu 2005-08-26
  • 打赏
  • 举报
回复
用if(e.getSource == button2)不可以吗?
believefym 2005-08-26
  • 打赏
  • 举报
回复
大哥,这个是两个监听器,
queue.postEvent(new ActionEvent(button1, ActionEvent.ACTION_PERFORMED,"button2")); 已经有button1了
zhouqi724 2005-08-26
  • 打赏
  • 举报
回复
if(e.getSource == button1){
}

响应事件怎么能没有source呢。大哥
believefym 2005-08-26
  • 打赏
  • 举报
回复
帮你看了一下,找不到答案
继续学习。。。
bluezoo 2005-08-26
  • 打赏
  • 举报
回复
Waiting!

62,628

社区成员

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

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