Java 如何注销JPanel的鼠标侦听器
我有两个Jbutton和一个JPanel。 如果注册鼠标侦听器的代码如下所示,我如何删除JPanel上注册的鼠标侦听器。点击一个按钮,这个鼠标侦听器被注册,现在点击另一个按钮,我想删除注册的鼠标侦听器。 如果我在点击第二个按钮时写下这样的东西Java 如何注销JPanel的鼠标侦听器,java,swing,panel,mouselistener,Java,Swing,Panel,Mouselistener,我有两个Jbutton和一个JPanel。 如果注册鼠标侦听器的代码如下所示,我如何删除JPanel上注册的鼠标侦听器。点击一个按钮,这个鼠标侦听器被注册,现在点击另一个按钮,我想删除注册的鼠标侦听器。 如果我在点击第二个按钮时写下这样的东西 pnlImagePanel.removeMouseListener(); 但在上面的一行中,removeMouseListener()方法需要listener对象,我没有实现鼠标侦听器的类。我已经为注册侦听器完成了以下代码,并且自己也
pnlImagePanel.removeMouseListener();
但在上面的一行中,removeMouseListener()方法需要listener对象,我没有实现鼠标侦听器的类。我已经为注册侦听器完成了以下代码,并且自己也在其中编写了代码
所以请告诉我朋友们,我怎样才能注销鼠标侦听器
下面是代码的一部分
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
Class abc{
pnlImagePanel.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent evt) {
System.out.println("Mouse Pressed");
startingX = evt.getX();
startingY = evt.getY();
System.out.println(Startingx);
System.out.println(StartingY);
}
});
}
谢谢大家! 不要创建匿名的
MouseListener
,而是创建实现MouseListener
类的类的对象,然后将其添加到JPanel
中进行侦听。删除时,将创建的MouseListener
对象传递给removeMouseListener()
函数。而不是创建匿名MouseListener
,创建实现MouseListener
类的类的对象,然后将其添加到JPanel
进行侦听。删除时,将创建的MouseListener
对象传递给removeMouseListener()
函数。以下是完整的代码
看看这对你有用吗
package testapplications;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JOptionPane;
/**
*
* @author sunil
*/
public class ButtonRegistrationTest extends javax.swing.JFrame
{
private javax.swing.JPanel panel;
private javax.swing.JButton register;
private javax.swing.JButton unregister;
/** Creates new form ButtonRegistration */
public ButtonRegistrationTest()
{
initComponents();
PanelMouseListener listener = new PanelMouseListener();
register.addActionListener(new RegisterMouseListener(listener));
unregister.addActionListener(new UnRegisterMouseListener(listener));
}
private class PanelMouseListener extends MouseAdapter
{
PanelMouseListener()
{
}
@Override
public void mouseClicked(MouseEvent e)
{
JOptionPane.showMessageDialog(rootPane, "Clicked");
}
}
private class RegisterMouseListener implements ActionListener
{
PanelMouseListener listener;
RegisterMouseListener(PanelMouseListener listener)
{
this.listener = listener;
}
public void actionPerformed(ActionEvent event)
{
panel.addMouseListener(listener);
}
}
private class UnRegisterMouseListener implements ActionListener
{
PanelMouseListener listener;
public UnRegisterMouseListener(PanelMouseListener listener)
{
this.listener = listener;
}
public void actionPerformed(ActionEvent event)
{
panel.removeMouseListener(listener);
}
}
private void initComponents() {
panel = new javax.swing.JPanel();
register = new javax.swing.JButton();
unregister = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
panel.setName("panel"); // NOI18N
javax.swing.GroupLayout panelLayout = new javax.swing.GroupLayout(panel);
panel.setLayout(panelLayout);
panelLayout.setHorizontalGroup(
panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 196, Short.MAX_VALUE)
);
panelLayout.setVerticalGroup(
panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 173, Short.MAX_VALUE)
);
register.setText("Register");
register.setName("register"); // NOI18N
unregister.setText("Unregister");
unregister.setName("unregister"); // NOI18N
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(panel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 91, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(register, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(unregister, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGap(27, 27, 27))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(panel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createSequentialGroup()
.addGap(23, 23, 23)
.addComponent(register)
.addGap(18, 18, 18)
.addComponent(unregister)))
.addContainerGap(127, Short.MAX_VALUE))
);
pack();
}
public static void main(String args[])
{
new ButtonRegistration().setVisible(true);
}
}
这是完整的代码 看看这对你有用吗
package testapplications;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JOptionPane;
/**
*
* @author sunil
*/
public class ButtonRegistrationTest extends javax.swing.JFrame
{
private javax.swing.JPanel panel;
private javax.swing.JButton register;
private javax.swing.JButton unregister;
/** Creates new form ButtonRegistration */
public ButtonRegistrationTest()
{
initComponents();
PanelMouseListener listener = new PanelMouseListener();
register.addActionListener(new RegisterMouseListener(listener));
unregister.addActionListener(new UnRegisterMouseListener(listener));
}
private class PanelMouseListener extends MouseAdapter
{
PanelMouseListener()
{
}
@Override
public void mouseClicked(MouseEvent e)
{
JOptionPane.showMessageDialog(rootPane, "Clicked");
}
}
private class RegisterMouseListener implements ActionListener
{
PanelMouseListener listener;
RegisterMouseListener(PanelMouseListener listener)
{
this.listener = listener;
}
public void actionPerformed(ActionEvent event)
{
panel.addMouseListener(listener);
}
}
private class UnRegisterMouseListener implements ActionListener
{
PanelMouseListener listener;
public UnRegisterMouseListener(PanelMouseListener listener)
{
this.listener = listener;
}
public void actionPerformed(ActionEvent event)
{
panel.removeMouseListener(listener);
}
}
private void initComponents() {
panel = new javax.swing.JPanel();
register = new javax.swing.JButton();
unregister = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
panel.setName("panel"); // NOI18N
javax.swing.GroupLayout panelLayout = new javax.swing.GroupLayout(panel);
panel.setLayout(panelLayout);
panelLayout.setHorizontalGroup(
panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 196, Short.MAX_VALUE)
);
panelLayout.setVerticalGroup(
panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 173, Short.MAX_VALUE)
);
register.setText("Register");
register.setName("register"); // NOI18N
unregister.setText("Unregister");
unregister.setName("unregister"); // NOI18N
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(panel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 91, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(register, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(unregister, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGap(27, 27, 27))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(panel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createSequentialGroup()
.addGap(23, 23, 23)
.addComponent(register)
.addGap(18, 18, 18)
.addComponent(unregister)))
.addContainerGap(127, Short.MAX_VALUE))
);
pack();
}
public static void main(String args[])
{
new ButtonRegistration().setVisible(true);
}
}
您可以从如下组件中删除所有鼠标侦听器
MouseListener[] mouseListeners = component.getMouseListeners();
for (MouseListener mouseListener : mouseListeners) {
component.removeMouseListener(mouseListener);
}
希望这有帮助。您可以从如下组件中删除所有鼠标侦听器
MouseListener[] mouseListeners = component.getMouseListeners();
for (MouseListener mouseListener : mouseListeners) {
component.removeMouseListener(mouseListener);
}
希望这有帮助。谢谢!谢谢你的答复。我也有同样的想法,但实际上我想知道如何注销以上述方式注册的mouselistener,因为我有大代码。而且,通过编写另一个类来管理代码将非常繁琐。因此,考虑编写另一个实现mouselistener optionalok的类,我将编写代码并稍后在这里发布,需要一些时间谢谢你的朋友!我将等待你的答复。谢谢非常感谢。谢谢你的答复。我也有同样的想法,但实际上我想知道如何注销以上述方式注册的mouselistener,因为我有大代码。而且,通过编写另一个类来管理代码将非常繁琐。因此,考虑编写另一个实现mouselistener optionalok的类,我将编写代码并稍后在这里发布,需要一些时间谢谢你的朋友!我将等待你的答复。谢谢