التعامل مع العناصر الرسومية فى الجافا باستخدام الشفرة (العنصر JTextField)

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل

التعامل مع العناصر الرسومية فى الجافا باستخدام الشفرة (العنصر JTextField)

مُساهمة من طرف زهراء في الأربعاء يناير 08, 2014 12:00 pm

بسم الله الرحمن الرحيم


_ العنصر حقل النص JTextField هو عنصر أساسي في المكتبة الرسومية Swing الذي يتيح للمستخدمين تحرير سطر واحد من النص. يسرد هذا المقال كيفية التعامل مه من خلال الشفرة

1_ إنشاء العنصر JTextField

هناك اكثر من طريقة لانشاء العنصر JTextField وهم على النحو التالى :


  • إنشاء العنصر مع بعض النصوص الاولية 

    الكود:
    JTextField textField = new JTextField("This is a text");

    ويمكنك ملاحظة ان حجم حقل النص JTextField يساوى طول النص المكتوب به





  • إنشاء العنصر بتحديد الحجم و بدون نصوص أولية

    الكود:
    JTextField textField = new JTextField(20);

    ويمكنك ملاحظة أننا قمنا بتحديد حجم النص بالقيمة 20




  • إنشاء العنصر بتحديد الحجم وإضافة نصوص أولية

    الكود:
    JTextField textField = new JTextField("This is a text", 20);





  • إنشاء حقل النص فارغ ثم تعيين النص وعدد الأعمدة في وقت لاحق:

    الكود:
    JTextField textField = new JTextField();
    textField.setText("This is a text");
    textField.setColumns(20);



2_الحصول على أو تعيين محتوى حقل النص

_يمكنك إستخدام الاسلوب getText للحصول على محتوى حقل النص على النحو التالى :

الكود:
String content = textField.getText();

_ كما يمكنك الحصول جزء معين من محتوى النص على النحو التالى :

الكود:
int offset = 5;
int length = 10;
 
try {
    content = textField.getText(offset, length);
} catch (BadLocationException ex) {
   }

والكود اعلاه يقوم بالحصول على 10 احرف من النص بداية من الحرف رقم 5 فى النص

_ يمكنك تعين قيمة المحتوى للحقل على النحو التالى :

الكود:
textField.setText("another text");

3_إنشاء نص تلميح tooltip لحقل النص

_ يمكنك استخدام الاسلوب setToolTipText لعمل نص تلميح لمكونات الرسومية فى الجافا وهو النص الذى يظهر عند وقوف الماوس على هذا العنصر ....وذلك على النحو التالى :

الكود:
textField.setToolTipText("Please enter some text here");


_كما يمكنك تنسيق نص التلميح هذا باستخدام وسم html على النحو التالى :

الكود:
textField.setToolTipText("<html><b><font color=red>"
                    + "Please enter some text here" + "</font></b></html>");


4_تحديد تركيز الإدخال input focus

عادة، يتم عمل تركيز لحقل النص عندما يقوم المستخدم بالنقر عليها أو الضغط على مفتاح TAB. لتعيين التركيز المدخلات برمجيا، يمكنك استخدم التعليمات البرمجية التالية و التى تحديد تركيز الإدخال في البداية فقط بعد عرض الحاوية (مثل JFrame):

الكود:
frame.setVisible(true);
textField.requestFocusInWindow();

_ كما يمكنك تحديد تركيز الإدخال في أي وقت حيث من المستحسن أن تطلب من التركيز داخل الطريقة  SwingUtilities.invokeLater () على النحو التالى :

الكود:
SwingUtilities.invokeLater(new Runnable() {
    @Override
    public void run() {
        textField.requestFocusInWindow();
    }
});

5_ إضافة حدث لحقل النص event listeners

يمكنك إضافة مستمع حدث لحقل النص بكل سهولة و يسر باستخدام الاسلوب addKeyListener ومن خلالة تستطيع عمل أحداث للحقل فى طرق عدة على النحو التالى :


  • حدث النقر على مفتاح Enter :

    الكود:
    textField.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent event) {
            System.out.println("The entered text is: " + textField.getText());
        }
    });



6_ تحديد النص فى العنصر  JTextField


  • تحديد النص كاملا :

    الكود:
    textField.selectAll();


  • تحديد جزء من النص :

    الكود:
    textField.setSelectionStart(8);
    textField.setSelectionEnd(12);


  • تعيين لون لاختيار والنص المحدد:

    الكود:
    textField.setSelectionColor(Color.YELLOW);
    textField.setSelectedTextColor(Color.RED);






7_ تخصيص مظهر JTextField

_توجد بعض الشفرات التى يمكنك استخدامها لتخصيص مظهر حقل النص JTextField على النحو التالى :


  • تعطيل تحرير حقل النص

    الكود:
    textField.setEditable(false);


  • محاذاة النص بداخل الحقل

    الكود:
    textField.setHorizontalAlignment(JTextField.CENTER);


    وتوجد قيم اخرى للمحاذاة وهى 


    الكود:
    JTextField.LEFT
    JTextField.CENTER
    JTextField.RIGHT
    JTextField.LEADING
    JTextField.TRAILING

  • تنسيق نوع الخط و حجمة ولون خلفية الحقل على النحو التالى :

    الكود:
    textField.setFont(new java.awt.Font("Arial", Font.ITALIC | Font.BOLD, 12));
    textField.setForeground(Color.BLUE);
    textField.setBackground(Color.YELLOW);


avatar
زهراء
........
........

تاريخ التسجيل : 18/02/2011
المساهمات : 262
النقاط : 372
التقيم : 24
الدولة : مصر
الجنس : انثى

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: التعامل مع العناصر الرسومية فى الجافا باستخدام الشفرة (العنصر JTextField)

مُساهمة من طرف infomath في الثلاثاء فبراير 04, 2014 7:42 am

السلام عليكم أختي زهراء شكرا لك على الموضوعلى
أضفت لى معلومات لم أعرفها شكراا
لدي استفسار عن كيفية جعل jtextfield يكتب  باللغة العربية مباشرة أي جعل لغة الكتابة تتغير بشكل آلي بوضع 
الفأرة في jtextfield 
شكرا وجزاك الله خيرا
avatar
infomath
.
.

تاريخ التسجيل : 03/02/2014
المساهمات : 2
النقاط : 2
التقيم : 0
الدولة : الجزائر
الجنس : انثى

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: التعامل مع العناصر الرسومية فى الجافا باستخدام الشفرة (العنصر JTextField)

مُساهمة من طرف زهراء في الثلاثاء فبراير 04, 2014 8:11 am

infomath كتب:السلام عليكم أختي زهراء شكرا لك على الموضوعلى
أضفت لى معلومات لم أعرفها شكراا
لدي استفسار عن كيفية جعل jtextfield يكتب  باللغة العربية مباشرة أي جعل لغة الكتابة تتغير بشكل آلي بوضع 
الفأرة في jtextfield 
شكرا وجزاك الله خيرا

بل شكر لكى أختى الكريمة على مرورك و بارك الله فيكى

بالنسبة لسؤال قوى بكتابة الكود التالى فى مستمع FocusGained للمكون jtextfield على النحو التالى :

الكود:

private void textFirstNameFocusGained(java.awt.event.FocusEvent evt) {
 textFirstName.getInputContext().selectInputMethod(new Locale("ar", "SA"));
textFirstName.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); 
}

حيث أن :textFirstName هو الاسم البرمجى للمكون jtextfield



واشكرك على مرورك
avatar
زهراء
........
........

تاريخ التسجيل : 18/02/2011
المساهمات : 262
النقاط : 372
التقيم : 24
الدولة : مصر
الجنس : انثى

الرجوع الى أعلى الصفحة اذهب الى الأسفل

jtextfield

مُساهمة من طرف infomath12 في الثلاثاء فبراير 04, 2014 1:46 pm

    شكرا جزيلا أختي على ردك السرييع جزاك الله خيرا
لكن عندما اضفت الكود التالي لم تتغير اللغة من فضلك ماهو الخطأ لماذا لم تتغير اللغة
motF من صنف JTextField


الكود:

}(  motF.addFocusListener(new FocusListener(){public void focusGained(FocusEvent arg0


{;(textFirstNameFocusGained(arg  
       
        @Override
      }(  public void focusLost(FocusEvent arg0
            // TODO Auto-generated method stub
           
        {
           
    ;({

شكرا لك مرة أخرى


عدل سابقا من قبل أحمد مناع في الأربعاء فبراير 05, 2014 9:52 am عدل 1 مرات (السبب : للتنسيق)

infomath12
زائر


الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: التعامل مع العناصر الرسومية فى الجافا باستخدام الشفرة (العنصر JTextField)

مُساهمة من طرف زهراء في الأربعاء فبراير 05, 2014 10:24 am

أختى الكريمة اذا اردتى استخدام الشفر فى انشاء JTextField بدلا من سحبة ووضعة على النافذة كما فى النت بينز مثلا فعليك استخدام الكود على النحو التالى :

كود انشاء الكائن :

الكود:
final JTextField textField = new JTextField(20);  


كود انشاء مستمع addFocusListener بالاضافة الى كود تغير اللغة تلقائى عندما يتم التركيز على الحقل textfield على النحو التالى :

الكود:
     
  textField.addFocusListener(new java.awt.event.FocusAdapter() {

public void focusGained(java.awt.event.FocusEvent evt) {
       
textField.getInputContext().selectInputMethod(new Locale("ar", "SA"));
textField.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
         
            }
});
avatar
زهراء
........
........

تاريخ التسجيل : 18/02/2011
المساهمات : 262
النقاط : 372
التقيم : 24
الدولة : مصر
الجنس : انثى

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: التعامل مع العناصر الرسومية فى الجافا باستخدام الشفرة (العنصر JTextField)

مُساهمة من طرف infomath في الأربعاء فبراير 12, 2014 3:45 pm

شكرا جزيلا وأعتذر من التاخر
الكود ناجح
شكرا جزيييييييييييييلا اختي  Smile
avatar
infomath
.
.

تاريخ التسجيل : 03/02/2014
المساهمات : 2
النقاط : 2
التقيم : 0
الدولة : الجزائر
الجنس : انثى

الرجوع الى أعلى الصفحة اذهب الى الأسفل

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى