请教一个问题。
EventQueue eq=getToolkit().getSystemEventQueue() ;
eq.postEvent(new ActionEvent(button1,ActionEvent.ACTION_PERFORMED,"button1" )) ;
当button1为Button类型时能够触发button1的事件,
当button1为JButton时就不能够触发。这是怎么回事?请问怎么解决这个问题。

解决方案 »

  1.   

    楼主判断事件来源的时候怎么判断的?试试用getActionCommand()行不行
      

  2.   

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.event.*;
    import javax.swing.JFrame;public class EventQueueFrame extends JFrame {
    public EventQueueFrame()
    {
    EventPanel p = new EventPanel();
    getContentPane().add(p);
    setSize(300,300);
    setVisible(true);
    }}
    class EventPanel extends JPanel
    {
    public EventPanel()
    {
    button1= new JButton("被触发");
    button2= new JButton("触发");
    add(button1);
    add(button2);
    button1.addActionListener(new ActionListener()
    {
    public void actionPerformed(ActionEvent e)
    {
    JOptionPane.showMessageDialog(null,"成功");
    }
    });
    button2.addActionListener(new ActionListener()
    {
    public void actionPerformed(ActionEvent e)
    {
    ActionEvent ent = new ActionEvent(button1,ActionEvent.ACTION_PERFORMED,"button1");
    //下面的代码是用事件队列来实现也只能实现Button类型。不能实现在JButton类型
    EventQueue eq=getToolkit().getSystemEventQueue() ;
    eq.postEvent(new ActionEvent(button1,ActionEvent.ACTION_PERFORMED,"button1" )) ;
                 

    }
    });
    }
    private JButton button1;
    private JButton button2;

    }
      

  3.   

    http://dev.21tx.com/2005/03/16/12595.html楼主看看这里,应该有帮助
      

  4.   

    楼主可以用在button2的事件处理中用doClick方法来模拟button1的按下。楼主提出的问题确实存在,同关注为什么JBtton捕捉不到手动抛出的事件。