菜鸟求助,我想做一个画板,可以画直线、曲线、矩形等。我在工具栏设置了一些按钮可以对鼠标进行监听,可是添加了监听之后发现,监听是累加的,即画完直线后,在选择画矩形,结果发现矩形的对角线也被画上了。求高人指教怎样防止监听累加,或是怎样除去以前的监听

解决方案 »

  1.   

    每个组件,也就是JComponent都有一个removeXXXXListener(XXXXListener linstener)的方法可以删除监听器
    比如removeMouseListener......
      

  2.   

    使用string getActionCommand() 加以判断
    写了个小例子,供参考import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;public class MyFrame extends JFrame implements ActionListener{
    private JButton jb1;
    private JButton jb2; MyFrame(){
    super("MyFrame");
    jb1=new JButton("Button 1");
    jb2=new JButton("Button 2"); Container con=getContentPane();
    con.setLayout(new FlowLayout()); con.add(jb1);
    con.add(jb2);
    jb1.setActionCommand("1");
    jb2.setActionCommand("2"); jb1.addActionListener(this);
    jb2.addActionListener(this);
    }
    public void actionPerformed(ActionEvent ae){
    System.out.println(ae.getActionCommand());
    }
    public static void main(String [] args){
    MyFrame mf=new MyFrame();
    mf.pack();
    mf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    mf.setVisible(true);
    }
    }
      

  3.   

    为什么要在按钮添加鼠标监听,应该是在你画图的区域添加就可以了
    要删除监听可以通过removeXXXLinstener方法
    不过你在你的监听方法作个事件源判断,比如
    Object obj = e.getSounce();
    if (obj == 画图版控件) {
        //do draw
    }