一个面板上需要有两种鼠标方法,于是做了两个MouseListener。
请问应该怎么切换呢?remove方法我没有用过。
最好详细一点,谢谢。

解决方案 »

  1.   

    import java.awt.Container;
    import java.awt.FlowLayout;
    import java.awt.event.*;import javax.swing.*;public class TestGUI extends JFrame {

    public TestGUI() {
    this.setBounds(300, 300, 300, 300);
    final Container c = this.getContentPane();
    c.setLayout(new FlowLayout());
    JButton button1 = new JButton("listener1");
    button1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent arg0) {
    // TODO Auto-generated method stub
    c.removeMouseListener(listener2);
    c.addMouseListener(listener1);
    }});
    JButton button2 = new JButton("listener2");
    button2.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent arg0) {
    // TODO Auto-generated method stub
    c.removeMouseListener(listener1);
    c.addMouseListener(listener2);
    }}); c.add(button1);
    c.add(button2);
    this.setVisible(true);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    } /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    new TestGUI();
    }

    private MouseListener listener1 = new MouseAdapter(){ public void mouseClicked(MouseEvent arg0) {
    // TODO Auto-generated method stub
    System.out.println("listener1");
    }
    };

    private MouseListener listener2 = new MouseAdapter(){ public void mouseClicked(MouseEvent arg0) {
    // TODO Auto-generated method stub
    System.out.println("listener2");
    }
    };
    }