mouseClicked(MouseEvent me)

Status
Nicht offen für weitere Antworten.

PollerJava

Top Contributor
Hallo,

ich habe eine CheckBox, wenn ich auf die klicke, dann zeige ich mir eine Linie an, wenn ich nochmal auf die CheckBox klicke, dann wird die Linie von der Oberfläche wieder gelöscht,

Ich möchte jetzt implementieren, dass, wenn der Benutzer auf die Checkbox geklickt hat, dass dann der Benutzer z.B.: 2 s nicht mehr auf die Checkbox klicken kann, also die Methode public void mouseClicked(MouseEvent me) sperren.
Ist das irgendwie einfach zu implementieren?

lg
 

happy_robot

Bekanntes Mitglied
Gänzlich ungetestet und ohne Gewähr :)

Code:
class CheckboxLocker implements Runnable {

   private JComboBox combo;

   public CheckboxLocker(JComboBox combo) {
          this.combo = combo;
   }

   public void run() {
          combo.setEnabled(false);
          Thread.sleep(2000);
          combo.setEnabled(true);
   }

}


Sollte funktionieren
 

Niki

Top Contributor
Erstell eine boolean Instanz-Variable, die am Anfach in mouseClicked überprüft wird:
Code:
private boolean canClick = true;

public void mouseClicked(MouseEvent e){
  if(!canClick)
    return;

//dein Code...
}

Beim ItemStateChangeEvent starte einen Thread oder Timer, der canClick auf false setzt, 2 Sekunden wartet, und dann wieder auf true setzt:
Code:
public void itemStateChanged(){
  //Linie zeichnen oder löschen....
  new Thread(new Runnable(){
    public void run(){
      canClick = false;
      try{
        Thread.sleep(2000);
      }catch(InterruptedException ignore){
      }
      canClick = true;
    }
  }).start();
}
 

PollerJava

Top Contributor
Vielen Dank,

Eine Frage hätte ich noch in diesem Kontext und zwar ist es möglich, dass ich ein Interface mache, in dem nur eine boolean Variable vorhanden ist, diese Interface in zwei Klassen implementiere und die variable dann in der einen Klasse je nach dem auf true oder auf false setze und in der anderen Klasse die Variable einfach lese.
Wenn das überhaupt geht, wie sauber ist so eine Lösung?,

lg und vielen Dank,
 

Niki

Top Contributor
"Variablen" in Interfaces sind immer public static final (also Konstanten) und können daher nicht geändert werden
 

PollerJava

Top Contributor
Aja, dann hat sich das erübrigt,
Vielen Dank, dann muss ich die beiden Klassen also fest koppeln, ich habe weder in der einen noch in der anderen Klasse eine Referenz auf die jeweilig andere Klasse,
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben