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();
}
}