在Java Swing中,一个类可以实现多个接口,因此可以在同一个类中实现两个不同的侦听器。以下是一个示例,展示了如何在同一个类中实现ActionListener
和MouseListener
,并将它们添加到Swing组件中。
ActionListener
、MouseListener
等。以下是一个完整的示例,展示了如何在同一个类中实现ActionListener
和MouseListener
,并将它们添加到一个按钮和一个面板中。
import javax.swing.*;
import java.awt.event.*;
public class MultiListenerExample implements ActionListener, MouseListener {
private JFrame frame;
private JButton button;
public MultiListenerExample() {
frame = new JFrame("Multi Listener Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 200);
button = new JButton("Click Me");
button.addActionListener(this); // 添加ActionListener
frame.add(button);
frame.addMouseListener(this); // 添加MouseListener
frame.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == button) {
JOptionPane.showMessageDialog(frame, "Button Clicked!");
}
}
@Override
public void mouseClicked(MouseEvent e) {
JOptionPane.showMessageDialog(frame, "Mouse Clicked at (" + e.getX() + ", " + e.getY() + ")");
}
@Override
public void mousePressed(MouseEvent e) {}
@Override
public void mouseReleased(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> new MultiListenerExample());
}
}
MultiListenerExample
类实现了ActionListener
和MouseListener
接口。button.addActionListener(this);
:将当前对象(实现了ActionListener
)添加为按钮的侦听器。frame.addMouseListener(this);
:将当前对象(实现了MouseListener
)添加为框架的侦听器。actionPerformed
:处理按钮点击事件。mouseClicked
:处理鼠标点击事件。MouseListener
方法(如mousePressed
、mouseReleased
等)需要实现但可以为空,因为它们在这个示例中没有具体操作。getSource()
)来区分事件来源。通过这种方式,可以在同一个类中灵活地处理多种类型的事件,提高代码的可维护性和可读性。
领取专属 10元无门槛券
手把手带您无忧上云