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

كيف يمكن التحكم بموضع الادوات على Frame باستخدام الاحداثيات(x,y)؟؟؟

بدأه MNF في 21 أبريل 2008 · 8 رد · 1,052 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم...

يعطيكم العافية ياخوة..

هل يوجد طريقة لوضع الادوات (JLabel,JTextField,JButton ....)على واجهة Frame باستخدام نظام الاحداثيات X و Y

والتحكم في اماكن هذه الادوات؟؟؟؟

"وَمَا تَدْرِي نَفْسٌ مَّاذَا تَكْسِبُ غَداً وَمَا تَدْرِي نَفْسٌ بِأَيِّ أَرْضٍ تَمُوتُ إِنَّ اللَّهَ عَلِيمٌ خَبِيرٌ"

#2

في البداية ضع

getContentPane().setLayout(null);

بعد ذلك استخدم الدالة

something.setBorder(startPointX,startPointY,width,height);

حيث something أي مكون كان

تأكد فقط من أسماء الدوال

تحياتي

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

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

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

728x90.png

#3

السلام عليكم..

شكرا على تعاونكم..

ولكن اتبعت متل ماحكيت ومازبط..

ياريت تعطينا متال صغير فيه كم اداة يتم ترتيبها عل الفريم حسب احداتيات x و y .

المشكلا باختصار هي انو اريد انشاء واجهة صغير لدليل تلفون تحتوي على ثلاث TextField رقم الهاتف واسم الشخص والمدينة,

وكذلك معهم ثلات Label رقم الهاتف واسم الشخص والمدينة.

واسفلهم اربع Button للحفظ والتعديل والحذف وزر جديد.ومش قادر اتحكم في اماكن توزيع هده الادوات على الفريم حسب مابدي؟؟

وهل يوجد طرق اخرى دون استخدام الاحداثيات(x,y),لتوزيع هذه الكومبونت على الفريم حسب مابدي.

شكرا كتير لتعاونكم..

"وَمَا تَدْرِي نَفْسٌ مَّاذَا تَكْسِبُ غَداً وَمَا تَدْرِي نَفْسٌ بِأَيِّ أَرْضٍ تَمُوتُ إِنَّ اللَّهَ عَلِيمٌ خَبِيرٌ"

#4

السلام عليكم

أخي MNF , عليك بدراسة موضوع الرصف ( Layout ) في الجافا .. و هو مشروح بالتفصيل هنا :

http://72.5.124.55/docs/books/tutorial/uis...out/visual.html

البرنامج التالي يوضح استخدام ثلاث أنواع من الرصف :

الـ Frame الرئيسية تتبع الرصف الحدودي BorderLayout

الـ Panel الأولى تتبع الرصف الشبكي GridLayout

الـ Panel الثانية تتبع الرصف التدفقي FlowLayout

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class MainFrame extends JFrame{

 static final long serialVersionUID = 1l;

 public static void main(String[] args) {
  new MainFrame();
 }

 public MainFrame() {
  javax.swing.SwingUtilities.invokeLater(new Runnable() {
   public void run() {
	createAndShowGUI();
   }
  });
 }

 private void createAndShowGUI() {  
  JFrame frame = new JFrame();
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  Container pane = frame.getContentPane();
  pane.setLayout(new BorderLayout());	
  pane.add(initPanel(),BorderLayout.PAGE_START);
  pane.add(initPanel2(),BorderLayout.PAGE_END);	
  frame.pack();
  frame.setVisible(true);
 } 

 public JPanel initPanel(){
  JPanel panel = new JPanel(new GridLayout(3,2));	
  panel.add(lblPhone);
  panel.add(txtPhone);
  panel.add(lblName);
  panel.add(txtName);
  panel.add(lblCity);
  panel.add(txtCity);
  return panel;
 } 

 public JPanel initPanel2(){
  JPanel panel = new JPanel(new FlowLayout());  
  panel.add(btnSave);
  panel.add(btnEdit);
  panel.add(btnDelete);
  panel.add(btnNew);
  return panel;
 } 

 JTextField txtPhone = new JTextField();
 JTextField txtName = new JTextField();
 JTextField txtCity = new JTextField();

 JLabel lblPhone = new JLabel("Phone");
 JLabel lblName = new JLabel("Name");
 JLabel lblCity = new JLabel("City");

 JButton btnSave = new JButton("Save");
 JButton btnEdit = new JButton("Edit");
 JButton btnDelete = new JButton("Delete"); 
 JButton btnNew = new JButton("New");

}

post-152370-1208855258_thumb.png

أبو خالد السوري

#5

أنا بصراحة أفضل طريقة الرصف بالنقطة

لأنها تعطيني حرية أكبر

على العموم الأخ أبو خالد لم يقصر

لكن إن أردت أن تتعامل مع طريقة النقطة

يفضل أن تستخدم إحدى برامج تصميم الواجهات

تحياتي

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

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

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

728x90.png

#6

السلام عليكم..

شكر كتيررررررررر يا أخ" أبو خالد السوري" ..جزاك الله الف خير ...

وبالنسبة للتعامل مع الرصف بالاحداثيات والنقط,هي الطريقة التي ابحث عنها بسبب مرونتها في الرسم.

فهل ممكن التعامل معها ياأخ "alaadiaa" من دون استخدام اي برامج خارجية لرسم الواجهات؟

"وَمَا تَدْرِي نَفْسٌ مَّاذَا تَكْسِبُ غَداً وَمَا تَدْرِي نَفْسٌ بِأَيِّ أَرْضٍ تَمُوتُ إِنَّ اللَّهَ عَلِيمٌ خَبِيرٌ"

#7

لا مشاكل في هذا

بالتأكيد يمكنك

الإحداثي (0،0) يبدأ من أعلى نقطة في اليسار

وعلى ذلك تستطيع رسم المكونات components الخاصة بك

في المكان الذي تريد

تحياتي

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

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

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

728x90.png

#8

السلام عليكم

الموضوع بسيط للغاية و لكن الاول لازم تعرف ان لكل container التخطيط الخاص بة

مثلا ال (JFrame, JDialog) التخطيط الافتراضى لهم هو BorderLayout

اذا لما تحب انت ترسم بنفسك كل حاجة فى مكان معين يبقى لازم توقف الافتراضى عن طريق setLayout(null)

و بعد كدة هتستخدم setBounds(int x, int y, int width, int height) و دية لكل component

و بعد كدة هتعمل add لكل واحد على الframe

بس انت ممكن تستعمل احد layout الموجودة او لو انت غاوى كدة ممكن تستعمل اى IDE و هم كثير

#9

السلام عليكم..

جزاكم الله الف خير...

اذ في امكانية يا أخ"mohamed rageb" تسرد لنا مثال صغير يتناول موضوع setBounds, ويحتوي على مجموعة من

component, وعملية اضافتها على Frame.

شكرااااا على تعاونكم...

"وَمَا تَدْرِي نَفْسٌ مَّاذَا تَكْسِبُ غَداً وَمَا تَدْرِي نَفْسٌ بِأَيِّ أَرْضٍ تَمُوتُ إِنَّ اللَّهَ عَلِيمٌ خَبِيرٌ"

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

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

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

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

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