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

كيف أظهر محتوى الإطار

بدأه Girl.net في 19 يوليو 2008 · 6 رد · 784 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم إخواني

أنا مبرمجة مبتدئة في الجافا وحابه أستفيد من خبرتكم الواسعة في هذه اللغة :P

عندي مشكلة واجهتني ولم أجد لها حل فقلت إن شاء الله أجد حلها عندكم :happy:

مشكلتي هي في ال GUI ، فعندما أضيف مكونات كثيرة إلى فريم ويزيد كمية المحتوى عن حجم الفريم ، تختفي بعض هذه المكونات وعندما أقوم بتكبير حجم الفريم تظهر هذه المكونات، وهذا شيء بديهي. حاولت حل هذه المشكلة باستخدام ال scroll pane و ال scroll bar ولكن للأسف ما قدرت أستخدمهم مع الفريم نفس ما كنت اعمل مع ال List وال TextArea .

أتمنى يا إخواني الكرام منكم المساعدة بقدر ما يمكن، فأنا مطلوب مني تسليم مشروع نهاية الترم في أقرب وقت ، والمشكلة هذه مضايقاني ومش عرفه أكمل المشروع كما ينبغي . فلا تبخلوا علي بمساعدتكم.

وهذا مثال بسيط يبين المشكلة:


import javax.swing.*;

public class Test {

public Test() {

JFrame frame =new JFrame();
Container pane=frame.getContentPane();
pane.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();

JButton []btn=new JButton[20];
for(int i=0;i<btn.length;i++){
btn=new JButton("Button "+(i+1));
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx =0;
c.gridy =i;
c.insets = new Insets( 10,70,0,70);
pane.add(btn,c);
}

frame.pack();
frame.setSize(200,300);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public static void main(String[] args) {
Test t=new Test();
}
}
 import java.awt.*;

#2

استبدل الامر

frame.setSize(200,300);

بالامر

frame.pack();
#3
العيافـي كتب:
استبدل الامر

frame.setSize(200,300);

بالامر

frame.pack();

شكرا أخي على الرد

الكود الذي ذكرت يظهر محتوى النافذة كاملا حتى ولو تجاوز حدود عرض الشاشة وأنا لاأريد ذلك، ما أريده هو الإحتفاظ بحجم النافذة كما هو ، مع إضا فة شريط زالق scroll pane مثل الشريط الذي في برنامج الورد المستخدم لتقليب الورق والشريط الذي في متصفح الانترنت لتقليب الصفحات.

أتمنى تكون فهمت ما أعنيه .

تم تعديل هذه المشاركة بواسطة Girl.net في 19 يوليو 2008 في 20:42

#4
JFrame frame =new JFrame();
		 JScrollPane scrollPane=new JScrollPane();
		 Container pane=new JPanel();//frame.getContentPane();
		 pane.setLayout(new GridBagLayout());
		 GridBagConstraints c = new GridBagConstraints();

		 JButton []btn=new JButton[20];
		 for(int i=0;i<btn.length;i++){
			 btn=new JButton("Button "+(i+1));
			 c.fill = GridBagConstraints.HORIZONTAL;
			  c.gridx =0;
			  c.gridy =i;
			 c.insets = new Insets(  10,70,0,70);
			 pane.add(btn,c);
			  }

		 scrollPane.setViewportView(pane);
		 frame.add(scrollPane);
		 frame.pack();
		 frame.setSize(200,300);
		 frame.setVisible(true);
		 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
#5

ألف شكر يا أخي العيافـي ، هذا فعلا ما أريده.

طيب لو كان عندي لوحتي(2panels) مثل الكود الذي في الأسفل، والمحتويات موزعة على اللوحتين ، وأردت انه يكون panel متحرك (بنفس الطريقة التي في الكود الأخير الذي كتبته) والاخر ثابت، يعني لما تحرك محتويات البانل الأول البانل الثاني المجاور يبقى ثابت. كيف يمكن نسويها؟

		 JFrame frame =new JFrame();
		 Container con=frame.getContentPane();
		 con.setLayout(new FlowLayout());

		 JPanel pan1=new JPanel();		 
		 pan1.setLayout(new GridBagLayout());
		 GridBagConstraints c = new GridBagConstraints();

		 JButton []btn=new JButton[30];
		 for(int i=0;i<btn.length;i++){
			 btn=new JButton("Button "+(i+1));
			 c.fill = GridBagConstraints.HORIZONTAL;
			 c.gridx =0;
			 c.gridy =i;
			 c.insets = new Insets(  10,20,0,20);
			 pan1.add(btn,c);
			  }


		 JPanel pan2=new JPanel();
		 pan2.setLayout(new FlowLayout());		 

		   JTextField fld[]=new JTextField[3];			 	
		   for (int i = 0; i<fld.length; i++){
				  fld=new JTextField(5);
				  pan2.add(fld);
				  }

	 	 con.add(pan1);
	 	 con.add(pan2);
		 frame.pack();
		 frame.setSize(400,300);
		 frame.setVisible(true);
		 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

تم تعديل هذه المشاركة بواسطة Girl.net في 20 يوليو 2008 في 13:05

#6

معقول يا أخوان ... ثلاثة أيام ولا أحد رد على الموضوع :huh:

رجاء يا إخواني لاتبخلوا على بخبرتكم وبأي رد منكم

#7

أهلا اختي

اقتباس
طيب لو كان عندي لوحتي(2panels) مثل الكود الذي في الأسفل، والمحتويات موزعة على اللوحتين ، وأردت انه يكون panel متحرك (بنفس الطريقة التي في الكود الأخير الذي كتبته) والاخر ثابت، يعني لما تحرك محتويات البانل الأول البانل الثاني المجاور يبقى ثابت. كيف يمكن نسويها؟

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

ضعي ما تشائين في كل منها فلن تاثر احداهما على الاخرى

اتمنى ان توضحي اكثر ^_^

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