如何在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();
}
}
}
感谢您提前提供任何帮助。
答案 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