Messen, wie oft ENTER gedrückt wurde

Status
Nicht offen für weitere Antworten.
M

math66

Gast
hi, ich hab ein jtextfield an dem ein keylistener für enter hängt. ich möchte jetzt messen, wie oft jemand in einer bestimmten zeit den listener aktiviert hat, also enter gedrückt hat. der listener sieht so aus:

Code:
textField.addKeyListener(new KeyListener() {
			public void keyReleased(KeyEvent e) {

			}

			public void keyPressed(KeyEvent evt) {
				if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
					
					
					enterPressed();
					
					
					
					
				}

			}

			public void keyTyped(KeyEvent e) {

			}

		});

hat jetzt jemand öfter als 5 mal pro zum beispiel sekunde gedrückt, soll ne ausschrift kommen. jemand eine idee dafür?

danke :)

ach ja, zeit messen kann man ja so:

Code:
long start = System.currentTimeMillis();
//irgendwas machen
long elapsedTimeMillis = System.currentTimeMillis()-start;
System.out.println(elapsedTimeMillis);
 
M

math66

Gast
hi, ich hab nen chat geschrieben und möchte eben verhindern, dass leute zu oft nachrichten absenden, damit der server nicht überlastet wird. es soll also nicht möglich sein, jede sekunde was sinnloses abzusenden. die methode enterpressed holt sich dann den string aus dem eingabefeld (mit gettext) und parst ihn und sendet ihn dann letztendlich an das passende servlet. aber es soll eben so sein, dass wenn jemand innerhalb von sagen wir mal 2 sekunden 10 mal absendet, er rausfliegt. das rausfliegen ist nicht das problem, aber eben das messen, wie oft in welcher zeit.

ne idee?

danke :)
 

L-ectron-X

Gesperrter Benutzer
Was dein Zeitmessungsproblem betrifft, bin ich noch am Überlegen.
Was deinen Code betrifft, fände ich diese Varianten besser:

Code:
textField.addKeyListener(new KeyAdapter() {
   public void keyPressed(KeyEvent evt) {
      if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
         enterPressed();					
      }
   }
});

oder
Code:
textField.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent evt) {
      enterPressed();
   }
});
 
M

math66

Gast
hi, vielleicht bau ichs ein. bin auch am überlegen, wenn du drauf kommst, dann bitte posten :)

danke soweit!
 

Mag1c

Top Contributor
Hi,

sowas in der Art?

Code:
   private long activated = 0;
    private int count = 0;

    public void enterPressed () {
        count++;
        long current = System.currentTimeMillis();
        if ((current - activated) >= 1000) {
            activated = current;
            count = 1;
        }
        else if (count >= 5) {
            // format c: :-)
        }
    }

Ja, ist nicht ganz exakt, dafür aber einfach ;)

Gruß
Mag1c
 
M

math66

Gast
hi, wäre ne idee, geht aber leider nicht wirklich...misst, ich komm auch nicht drauf :-|
 
M

math66

Gast
hi, also gehen an sich tut es schon. jetzt ist es aber eben so, dass er nur aller z.b. 1000 ms eine nachricht absendet...das ist auch nicht übel, aber eben nicht das was ich wollte. er mekr auch, wenn jemand mehr als X mal pro Y ms gedrückt hat. drückt aber jemand schneller als Y ms, dann kommt die eingabe ins textfeld, wird aber nicht gesendet. ist sicher schwer nacxhvolltiehbar, wenn mans nicht sieht. vielleicht nehm ichs ja so wie es jetzt ist...nur so könnte man als nutzer eben denken, dass der chat nicht auf jedes enter reagiert bzw. lahm ist.

hm...gruß :?:
 

Mag1c

Top Contributor
Hi,

modifiziert:

Code:
    private long activated = 0;
    private int count = 0;

    public void enterPressed () {
        count++;
        long current = System.currentTimeMillis();
        if ((current - activated) >= 1000) {
            activated = current;
            count = 1;
        }
        if (count >= 5) {
            // format c: :-)
        }
        else {
            // hier Text senden oder was weiß ich
        }
    }

Gruß
Mag1c
 

André Uhres

Top Contributor
Code:
...
        textfield.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                textfieldActionPerformed(evt);
            }
        });
...
    private void textfieldActionPerformed(ActionEvent evt) {
        //Enter: höchstens einmal pro Sekunde
        if(!timer.isRunning()) timer.restart();
        if(++enterCount > 1) return ;
        System.out.println(textfield.getText();
    }
...
    private javax.swing.Timer timer = new javax.swing.Timer(1000, new ActionListener() {
        public void actionPerformed(ActionEvent e) {enterCount = 0;}});
    private int enterCount;
...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Sinuston ausgeben und über Mikro Amplitude messen – machbar? Allgemeine Java-Themen 6
G Speichergrösse eines Objekts messen? Allgemeine Java-Themen 3
F Geschwindigkeit messen Allgemeine Java-Themen 7
G Ausführungsdauer von Methoden messen Allgemeine Java-Themen 3
H Sekunden messen wie lange h.ibernate/jdbc abfragen brauchen Allgemeine Java-Themen 7
K Java-Code messen Allgemeine Java-Themen 15
P Zeit messen Allgemeine Java-Themen 16
G Messen in einer Grafik Allgemeine Java-Themen 7
D Zeit messen Allgemeine Java-Themen 2
S Bandbreite/Anzahl Pakete messen Allgemeine Java-Themen 3
T WLAN-Feldstärke ala Netstumbler mit Java messen ? Allgemeine Java-Themen 2
C Vergangene Zeit seit Anwendungsstart messen Allgemeine Java-Themen 5
Kirby.exe Keyboard Input ohne Enter Allgemeine Java-Themen 43
K Input/Output Enter der OS-Kommandozeile nachstellen Allgemeine Java-Themen 4
P String nach ENTER durchsuchen Allgemeine Java-Themen 6
DStrohma [Erledigt] Wieso kann ich Taste 'ENTER' in JTable nicht belegen? Allgemeine Java-Themen 2
M Enter Taste in Konsole abfragen Allgemeine Java-Themen 2
T Einzelnes Zeichen von der Tastatur einlesen, aber ohne Enter Allgemeine Java-Themen 4
G default button für enter taste Allgemeine Java-Themen 3
M Ohne Enter weiter machen? Allgemeine Java-Themen 6
G Enter-Taste simulieren Allgemeine Java-Themen 14
B JComboBox-Eintrag ohne Enter aktualisieren Allgemeine Java-Themen 2
B Wie erstelle ich dazu eine Abfrage ob der Button gedrückt wurde? Allgemeine Java-Themen 8
Sogomn Thread blocken bis Taste gedrückt Allgemeine Java-Themen 5
H In windowClosing() abfragen, ob STRG gedrückt wurde Allgemeine Java-Themen 8
N Schlüsselworte if abfrage ob linke oder rechte maustaste gedrückt ist Allgemeine Java-Themen 5
G while Schleife ausführen solange eine Taste gedrückt ist Allgemeine Java-Themen 14
Guybrush Threepwood Warten, bis keine Taste gedrückt Allgemeine Java-Themen 11
M Methode soll warten, bis Button gedrückt Allgemeine Java-Themen 2
reibi Aktion Taste gedrückt abfangen Allgemeine Java-Themen 9
F abprüfen ob zb strg + alt + entf gedrückt wurde Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben