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

شرح : كيف تنقل التركيز بين المكونات ؟

بدأه rohaili في 27 مايو 2009 · 2 رد · 1,011 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

المثال التالي ينقل التركيز بين مجموعة من JTextField باستخدام الزر TAB، مع امكانية الاضافة للمكونات ؟

أولا : أنشأ ال class التالي : وهو الذي يقوم بنقل التركيز بين المكونات بعد تمرير مصفوفة من نوع LinkedList تحتوي على هذه المكونات وهي من نوع JTextField في مثالي هذا .

package rohaili;

import java.awt.Component;
import java.awt.Container;
import java.util.LinkedList;
import javax.swing.JTextField;

public class focustraversalpolicy extends java.awt.FocusTraversalPolicy {
	LinkedList<JTextField> linkedlist;

	public focustraversalpolicy (LinkedList<JTextField> linkedlist) {
		this.linkedlist = linkedlist;  
	}

	@Override
	public Component getComponentAfter (Container FocusCycleRoot, Component comp) {
		int idx = linkedlist.indexOf(comp);
		return linkedlist.get((idx + 1)% linkedlist.size());
	}

	@Override
	public Component getComponentBefore (Container FocusCycleRoot, Component comp) {
		int idx = linkedlist.indexOf(comp);
		return linkedlist.get(idx - 1);		
	}

	@Override
	public Component getDefaultComponent (Container FocusCycleRoot) {
		return linkedlist.getFirst();
	}

	@Override
	public Component getFirstComponent (Container FocusCycleRoot) {
		return linkedlist.getFirst();	
	}

	@Override
	public Component getLastComponent (Container FocusCycleRoot) {
		return linkedlist.getLast();
	}
}

ثانيا : أضف الأوامر التالية الى ال class الرئيس في مشروعك :

السطر الرابع : ينشأ مصفوفة تسمى focuslist من النوع LinkedList ويحدد نوع المكونات التي سوف تحتويها وهي JTextField ، يمكنك أن تختار النوع الذي تريده .

السطر الخامس : ينشأ ftp من نوع focustraversalpolicy (ال class الذي أنشاناه سابقا) ويمرر له المصفوفة focuslist .

import java.util.LinkedList;
import javax.swing.JTextField;

private LinkedList<JTextField> focuslist;
private focustraversalpolicy ftp;

focuslist = new LinkedList<JTextField>();
ftp = new focustraversalpolicy(focuslist);

الأوامر التالية لإضافة المكونات الى المصفوفة ، الأول يضيف مكون الى آخر المصفوفة ، والثاني يضيف مكون عند فهرس معين .

public void addtoorder(JTextField comp){
	focuslist.add(comp);
}
public void addtoorder(int index, JTextField comp){
	focuslist.add(index, comp);	 
}

أتمنى للجميع التوفيق .

1

300_130.gif

#2

ينقص شيء أخير

والذي هو إضافة هذه الخطة policy إلى شاشة معينة Frame

ويتم هذا عن طريق هذه الدالة

 this.setFocusTraversalPolicy(policy);

جهد رائع أخ rohaili

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#3

جزاك الله خيرا يا علاء الصالحي فعلا نسيت هذا الأمر :

panel.setFocusTraversalPolicy(ftp);

حيث أن المكونات JTextField ، موجودة في المكون panel .

أتمنى للجميع التوفيق .

تم تعديل هذه المشاركة بواسطة rohaili في 28 مايو 2009 في 00:20

300_130.gif

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