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

ارسال داتا بين نافدتين Jframe

بدأه Ph-RevIng في 3 يوليو 2012 · 5 رد · 742 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

لدي نافدتين النافدة الاولى بها Jtexfield و زر open يفتح النافدة التانية

النافدة التانية بها زر Transfer و ايضا Jtexfield

ما اريده هو عند ضغط Transfer يتم ارسال ما هو مكتوب على Jtexfield في النافدة التانية ووضعه في Jtexfield النافدة الاولى.

عملية نقل بيانات بين نافدة واخرى!

تم تعديل هذه المشاركة بواسطة Ph-RevIng في 3 يوليو 2012 في 19:39

#2

السلام عليكم و رحمة الله و بركاته

عندى حل قمت به من قبل قد يناسبك

افترض أن النافذة الأولى اسمها JFirstFrame

و الثانية اسمها JSecondFrame

و المطلوب هو بالضغط على زر اسمه JTransferButton موجود فى النافذة JFirstFrame و ينقل محتوى JTextBox إلى JTextBox الموجود فى JSecondFrame

سأعطيك أخى مثالا مبسطا

أولا : عمل attribute نوعه JFirstFrame داخل JSecondFrame

به دالة method تأخذ باراميتر من نوع JFirstFrame نطلبها من النافذة الأخرى و نضعها كباراميتر ,, حينها عندما تتحكم فى ال attribute فإنك تتحكم فى النافذة الأخرى

-مع الملاحظة أن هذه النافذة JsecondFrame سيتم فتحها من دالة main فى النافذة الأخرى التى ستعمل أولا

Class JSecondFrame{
JFirstFrame fr;

public void setFrame(JFirstFrame fr){
this.fr=fr;
}

////// الدالة التى تعمل عند ضغط الزر JTransferButton أو كما تسميها
public void actionPerformed(ActionEvent e){
fr.WriteText(JTextBox.getText());

}

}

ثانيا : تعريف النافذة الثانية داخل دالة main و إظهارها ثم إرسال أوبجكت النافذة المسمى this الذى يشير إلى الكلاس كباراميتر فى الدالة setFrame الموجودة فى النافذة الثانية

بمعنى :

- عمل دالة اسمها WriteText و تأخذ باراميتر نوعه String و يتم من خلالها كتابة النص فى الحقل النصى باستدعائها من النافذة الأخرى

-ارسال أوبجكت النافذة إلى النافذة الأخرى و الكود سيوضح و أى تفسير أنا تحت أمرك

Class JFirstFrame{


public void writeText(String text){

JTextBox.setText(text);
}


public static void main(string args){
fr.setFrame(this);
JSecondFrame fr = new JSecondFrame();
fr.setVisible(true);


}

}

تم تعديل هذه المشاركة بواسطة Mitology في 3 يوليو 2012 في 21:35

#3

السلام عليكم

لقد واجهتنى هذه المشكلة من قبل

و افضل حل هو انك تقوم بوضع متغير static في الframe الاولى و تستطيع الوصول اليه من ال frame الثانية

هذ هو الموضوع

/index.php?showtopic=245987&st=0&p=1219102&fromsearch=1entry1219102

#4

هناك معلومه مهمه لم تذكر هنا

هل النافذتين عباره عن كلاسين مختلفين ، اي ان كل كلاس في ملف مصدري ، او انهما عبار عن Two different instances of the same object

ام ان النافذتين داخل كلاس واحد وهذه حاله تحدث خاصه عندما تصمم باستخدام GUI editor حيث انك تقوم بسحب الادوات من الpalette ويقوم المحرر باضافتها داخل نفس الكلاس ، فمثلا لو قمت بعمل كلاس JFrame ثم قمت بسحب JFrame اخرى الى داخل البرنامج سوف يتم اضافته داخل الكلاس الاول

بافتراض الحاله الاولى يمكن تبادل المتغيرات اما عبر متغير static كما ذكر في الرد الاخير ، كما يمكنك وضعه في متغير instance variable والوصول اليه عبر الدوال set,get ، يمكنك ايضا وضعها في ملفات نصيه او غيرها ، كما يمكنك وضع القيمه في property او preference

كمثال لتبادل القيمه باستخدام الدوال set, get لنفرض ان الفريم بها

pulbic class SenderFrame extends JFrame{

private JTextField senderText;
.
.
.
.
public JTextField getSenderText(){
return senderText;
}
.
.

في الكلاس الاخر الذي يقرأ النص

public class ReceiverFrame{

ReceiverFrame(SenderFrame sf){

this.sf = sf;
}
private SenderFrame sf;

.
.
.
.
public void actionPerformed(ActionEvent evt){
this.receiverText.setText(sf.getSenderText().getText());


}

بالنسبة للحاله الثانية فيمكنك استدعاء مربع النص بشكل مباشر

او شيئ من هذا القبيل

1

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#5

هذا الموضوع قد عانت منه با سابق , كااحد الحلول البسيطه المقترحه استخدام الcard layout

اثناء تصميم الواجهة

حيث يكون كلاس JFrame واحد ويتغير فقط المحتوى ..

ولا داعى لكلاس اخر ..

كن مثل طابع البريد ، التصق بهدفك...حتى تصل الى هناك!

#6
sahraoui17 كتب:

السلام عليكم

لقد واجهتنى هذه المشكلة من قبل

و افضل حل هو انك تقوم بوضع متغير static في الframe الاولى و تستطيع الوصول اليه من ال frame الثانية

هذ هو الموضوع

http://www.arabteam2...1

وعليكم السلام ورحمه الله وبركاته

لكن الـ static قد تسبب مشاكل معك فى تنظيم الكود

استخدمها لحين الحاجه فقط

Software Developer
Mahmoudkelany.com


 

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…