Originariamente inviato da draghe
voglio realizzare un pulsante che tenendo lo premuto mi incremente una certa variabile così da da nn dover cliccar un milione di volte.
Vuoi che tenendo premuto venga fatto qualcosa più volte in modo ripetuto ogni tot di tempo (più o meno alla stregua di cosa succede tenendo premuto un tasto)?? Allora innanzitutto hai bisogno di un timer.
Per ricevere notifica di pressione/rilascio del pulsante in modo "pulito" (non con MouseListener che è a livello più "basso"!) mi viene in mente di usare un ChangeListener e il ButtonModel e verificare il cambio del flag "pressed":
codice:
tuoButton.addChangeListener(new ChangeListener() {
private boolean lastPressed = false;
public void stateChanged(ChangeEvent e) {
ButtonModel model = tuoButton.getModel(); // Eventualmente il JButton anche dal source con getSource().
if (!lastPressed && model.isPressed()) {
// .... premuto, fai qualcosa
} else if (lastPressed && !model.isPressed()) {
// .... rilasciato, fai qualcosa
}
lastPressed = model.isPressed();
}
});
Ma ripeto: hai 1 evento per la pressione e 1 per il rilascio, se vuoi fare qualcosa di ripetuto a brevi intervalli di tempo devi usare un timer (es. javax.swing.Timer).