الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

KEY EVENT .... JAVA

بدأه aljenirala في 12 مارس 2012 · 4 رد · 599 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

هل يمكن استخراج ال الزمن ل KEY EVENT لكل حرف من سلسة معينة

مثال البرنامج يطلب من المستخدم ادخال سلسة معينة مثلا CISCO

المخرجات تكون الزمن الدي اخذه المستخدم للانتقال من C to I ,I to S, S to C ,C to O

ومجموع الزمن المستغرق لطباعة هذه االسلسة

#2

يمكنك البدء من هنا:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public final class TestKeyboardTiming {
    public static void main(String... args) {
        EventQueue.invokeLater(
                new Runnable()  {
                    @Override
                    public void run() {
                        JFrame frame = new MyFrame();
                        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                        frame.setVisible(true);
                    }
                }
        );
    }
}

class MyFrame extends JFrame {
    private JTextField field;
    private long start, end;
    private java.util.List<InputTime> diffs;
    private boolean startCalc = false;

    public MyFrame() {
        setLocationByPlatform(true);
        setSize(400,300);
        setTitle("Test Keyboard events");

        diffs = new ArrayList<InputTime>();

        // add components
        field = new JTextField();
        field.setFont(new Font("tahoma", Font.BOLD, 20));
        field.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed (KeyEvent event) {
                if ( !startCalc ) {
                    start = System.currentTimeMillis();
                    end = start;
                    diffs.add( new InputTime(event.getKeyChar(), (end-start)) );
                    startCalc = true;
                }
                else {
                    end = System.currentTimeMillis();
                    diffs.add( new InputTime(event.getKeyChar(), (end-start)) );
                    start = end;
                }
            }
        });

        JButton button = new JButton("Stop");
        button.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("timing");

                for(InputTime diff: diffs) {
                    System.out.printf("Input %s in %d\n", diff.text, diff.time);
                }

                startCalc = false;
            }
        });

        this.add(this.field, BorderLayout.CENTER);
        this.add(button, BorderLayout.SOUTH);
    }

    private class InputTime {
        final char text;
        final long time;

        InputTime(final char value, final long time) {
            this.text = value;
            this.time = time;
        }
    }
}

الفكرة بعمل key event على الtextfield ، ومن ثم عندما تدخل اي حرف يتم حساب الفرق بين الحالي والوقت السابق وهكذا سوف تعرف الفرق ، ونقوم بتخزينهم فينا بعد..

عندما تضغط على الزر توقف ثم يتم طباعه كل الحروف المدخله والوقت المستغرق لكل منها، الحرف الأول سوف يكون 0 لأنه أول حرف,,

اي سؤال يمكنك وضعه،

بالتوفيق،

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#3

Hi there, I have one question ?

I wanted to know how can I calculate the time of holding one key

I mean the time user take to hold one key and release it

#4

شكرا لك اخي وجدي على الرد ولكن اود ان اعرف كيف يمكن ان اعتبر الضغط على CAPS KEY ,BACKSPACE

بمعتى ادا كان من المفترض ان ادخل سلسلتين متشابهتين واريد ان اقارم الزمن الدس اخده المستحدم في السلسة الاولى ومقارنتة بالثانية

في هذه الحالة المستخدم يمكن ان يدخل بالخطا حرف غير مطلوب ويضغط BACKSPACE وبعدها يدخل الحرف الصحيح

وفي حالة السلسة تحتوي حروف صعيرة وكبيرة فيحب اعتبار ذذلك

#5

بنفس الفكرة ، فقط عليك أن تعرف هذا الحرف هو حرف مسافة أو حرف الحذف ،، ويمكنك معرفته عن طريق الأسكي كود الخاص به ،،

قم بالتجربة وسوف نساعدك فيها، وعليك بقرائه :

http://docs.oracle.com/javase/tutorial/uiswing/events/mouselistener.html

ولن يضرك قرائه فصل في كتاب عن هذا الموضوع،،

بالتوفيق،

1

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

مواضيع مشابهة