多个按钮和多个侦听器执行各种操作Java Swing

时间:2012-03-28 18:21:06

标签: java swing event-listener

如何在java swing中有多个按钮和多个侦听器执行各种操作。这是我的一个示例,我可以重定向到AddStudent类,但重定向到AddAdult类的按钮不会重定向到AddAdult类。

private class ButtonHandler implements ActionListener {
  // handle button event
  public void actionPerformed( ActionEvent Student ) {
    if ( Student.getSource() == button1 ){
      try {
        AddStudent newmember = new AddStudent();
        newmember.setVisible( true );
      } catch ( Exception e1 ) {
        e1.printStackTrace();
      }
  }
}


public void actionPerformed( ActionEvent Adult ) {
  if ( Adult.getSource() == button2 ){
    try {
      AddAdult newmember = new AddAdult();
      newmember.setVisible( true );
    } catch ( Exception e1 ) {
      e1.printStackTrace();
    }
  }
}

感谢您提前提供任何帮助。

3 个答案:

答案 0 :(得分:4)

您可以ActionListener附加JButton JButton firstButton = ...; firstButton.addActionListener( myFirstButtonActionListener ); JButton secondButton = ...; secondButton.addActionListener( mySecondActionListener ); //add them to a UI contentPane.add( firstButton ); contentPane.add( secondButton ); ,如Swing tutorial for buttons

中所述

所以你最终会得到像

这样的东西
{{1}}

有关您的计划和按钮的更具体问题,您需要向我们提供更多代码,然后您的问题中就会出现(换句话说,发布SSCCE

答案 1 :(得分:1)

如果您想拥有多个处理程序,可以定义多个类,每个类实现ActionListener接口并实现适当的逻辑,并将其附加到适当的按钮。 如果要对所有按钮使用单个处理程序,可以使用getActionCommand()(比使用getSource()更清晰的方法)检查​​按钮文本并使用if else相应地实现处理逻辑。

答案 2 :(得分:1)

你有另外三种方式

1)使用Swing Action

       myPanel.add(new JButton(new AbstractAction("some narrative") {

            private static final long serialVersionUID = 1L;

            @Override
            public void actionPerformed(ActionEvent e) {
                //some stuff
            }
        }));

2)使用内部ActionListener

代码

myButton.addActionListener(new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent ae) {
        //some stuff
    }
});

3)使用EventHandler