jak szybko potrafisz pisać

0

Witam

Mam mały problem techniczny z aplikację do pomiaru szybkości pisania na klawiaturze. Aplikacja typu Mistrz Klawiatury. Layout minimalny jest choć i tak będzie przebudowany ponieważ najważniejsza dla mnie jest funkcjonalność aplikacji.

Nie do końca mam pomysł, a próbowałem wiele razy algorytmicznie do tematu podejść czyli.
Nastawiamy stoper poprzez btn start na 10 sek i zaczynamy wprowadzać znaki do textfield'a.
Sposób ten jest o tyle lipny, że w stoperze jest sleep który blokuje dostęp do pola.
W etykiecie co 10 sek pojawiać się będzie ilość wpisanych znaków w ciągu danego czasu.
Chyba wyczerpała mi się idea jak to wykonać. Jeśli miałby ktoś pomysł będę bardzo wdzięczny ;)

Code:

package how_fast_we_can_write;

import java.awt.Container;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class showGUI extends JFrame{

JButton button;
JTextField field2;
static Timer timer;
static int interval;
int licznik,licznik2,diff, time2;
String secs;
public showGUI(){
	
	setSize(400,200);
	setVisible(true);
	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	JPanel p = new JPanel();
	add(p);
	JTextField field1 = new JTextField();
	field1.setPreferredSize(new Dimension(100,20));
	p.add(field1);
	JLabel lab1 = new JLabel("Etykieta");
	lab1.setPreferredSize(new Dimension(100,20));
	p.add(lab1);
	field2 = new JTextField();
	field2.setPreferredSize(new Dimension(100,20));
	p.add(field1);
	p.add(field2);
	
	button = new JButton("Start");
	p.add(button);
	
}

public void startTime(){
	
	button.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				
				
			    timer = new Timer();
			    interval = Integer.parseInt(secs);
			    System.out.println(secs);
			    
			}});
	field2.addKeyListener(new KeyAdapter(){
		public void keyTyped(KeyEvent ev){
			char keyChar = ev.getKeyChar();
		
			if(keyChar == 'a'){
				licznik2++;
			}
		
			}});
}

public static void main(String[] args){

	showGUI show = new showGUI();
	show.startTime();
		


}}

package how_fast_we_can_write;

import java.util.Date;
import java.util.Scanner;

public class StopTime {

int licznik,number,licznik2,rest;
String start;
public void Stop(){
	
	licznik=10;
	
	while(licznik > 0){
	System.out.print(licznik+"\n");
	licznik--;
	try {
	    Thread.sleep(1000);                 //1000 milliseconds is one second.
	} catch(InterruptedException ex) {
	    Thread.currentThread().interrupt();
	}
	}
	
	System.out.print("Czas sie skonczyl");
}

public static void main(String[] args){
	
	StopTime stop = new StopTime();
	stop.Stop();
}

}

0

Użyj wątków.

1 użytkowników online, w tym zalogowanych: 0, gości: 1