怎样去除监听器 菜鸟求助,我想做一个画板,可以画直线、曲线、矩形等。我在工具栏设置了一些按钮可以对鼠标进行监听,可是添加了监听之后发现,监听是累加的,即画完直线后,在选择画矩形,结果发现矩形的对角线也被画上了。求高人指教怎样防止监听累加,或是怎样除去以前的监听 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 每个组件,也就是JComponent都有一个removeXXXXListener(XXXXListener linstener)的方法可以删除监听器比如removeMouseListener...... 使用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); }} 为什么要在按钮添加鼠标监听,应该是在你画图的区域添加就可以了要删除监听可以通过removeXXXLinstener方法不过你在你的监听方法作个事件源判断,比如Object obj = e.getSounce();if (obj == 画图版控件) { //do draw} java文本 插入\n字符 RunTimeException 是不用Catch的,那怎么区别是不是呢? java(se) 怎么实现窗体的渐显效果 问个设置JTable里面行高和对齐方式的问题。 关于用正则表达式查找字符串中中文的问题 谁能帮我解决一下 在jdk下面调用com出问题拉?劳驾知道的进来一下。 HttpConnection 的连接等待问题(急!) 多线程问题 这样会不会产生内存泄露? 关于spring bean 作用范围 java 21点游戏源码
比如removeMouseListener......
写了个小例子,供参考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);
}
}
要删除监听可以通过removeXXXLinstener方法
不过你在你的监听方法作个事件源判断,比如
Object obj = e.getSounce();
if (obj == 画图版控件) {
//do draw
}