e o seguinte estou fazendo uma aplicação em swing e tenho que contar os cliques do mouse em um determinado JPanel para isto eu declarei um
private int countClick; este countClick e incrementado + 1 no metodo
mousePressed de listener o problema e que quando o usuario da 1 clique
ele incrementa 83 vezes o pq disso?
Made in NetBeans.
Exemplo rápido.
/*
* NewJFrame.java
*
* Created on 27 de Maio de 2007, 23:04
*/
package javaapplication1;
/**
*
* @author Cracatio
*/
public class NewJFrame extends javax.swing.JFrame {
private int contador = 0;
/** Creates new form NewJFrame */
public NewJFrame() {
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
lbNum = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jPanel1.setBackground(new java.awt.Color(255, 0, 102));
jPanel1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jPanel1MouseClicked(evt);
}
});
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 100, Short.MAX_VALUE)
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 100, Short.MAX_VALUE)
);
lbNum.setText("jLabel1");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(38, 38, 38)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(27, 27, 27)
.addComponent(lbNum)
.addContainerGap(201, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(25, 25, 25)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(29, 29, 29)
.addComponent(lbNum))
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(175, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
private void jPanel1MouseClicked(java.awt.event.MouseEvent evt) {
contador++;
lbNum.setText(Integer.toString(contador));
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewJFrame().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JPanel jPanel1;
private javax.swing.JLabel lbNum;
// End of variables declaration
}
Post o código ai para que possamso ajudar melhor
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics graph = g.create();
if(forma != null)
forma.print(graph);
if(TransferMain.getInstance().isChangeScale()){
changeRectScale();
TransferMain.getInstance().setChangeScale(false);
}
this.addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e){
Graphics pG = getGraphics().create();
scordsXY.setX(e.getX());
scordsXY.setY(e.getY());
listCordenadas.add(new Cordenada(scordsXY));
if(TransferMain.getInstance().isPoligono()){
if(!bfPoint){
firstPoint.setX(e.getX());
firstPoint.setY(e.getY());
}
if(listCordenadas.size() > 1){
for(int i=1;i<listCordenadas.size();i++){
int x1 = listCordenadas.get(i-1).getX();
int y1 = listCordenadas.get(i-1).getY();
int x2 = listCordenadas.get(i).getX();
int y2 = listCordenadas.get(i).getY();
pG.drawLine(x1, y1, x2, y2);
}
}
}
System.out.println(contClick++);
}
public void mouseReleased(MouseEvent e){
if(TransferMain.getInstance().isRetangulo()){
desenhaRetangulo(e);
}
if(TransferMain.getInstance().isPoligono()){
if(firstPoint.getX() == e.getX() && firstPoint.getY() == e.getY() && contClick > 2)
poligno = new Poligno(listCordenadas);
}
}
});