は、完全なコード
これはあなた
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を登録解除する方法を知りたいです。別のクラスを書くことによってコードを管理するのは非常に面倒です。したがって、mouselistenerを実装する別のクラスを書くという考え方を入れてください。 –
ok、私はコードを書いてしばらくここに投稿しますが、時間がかかります –
ありがとうございました!私はあなたの返事を待つでしょう。ありがとう! –