下面是完整的代碼
看看這對你的作品
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的選項的想法可選 – 2012-02-07 07:54:48
好的,我會寫代碼並在這裏發佈一段時間,需要一些時間 – 2012-02-07 07:56:06
謝謝你的朋友!我會等待你的回覆。謝謝! – 2012-02-07 07:58:12