السلام عليكم ورحمة الله وبركاته
أود سؤالكم عن تصميم الواجهات بلغة الجافا
لدي أكثر من واجهه يتم الوصول إليها عن طريق أزرار في الواجهه الرئيسية
هل بإمكانكم توضيح كيف استطيع التنقل بين الواجهات أو ارفاق مثال
وأكون شاااااااكرة لكم
السلام عليكم ورحمة الله وبركاته
أود سؤالكم عن تصميم الواجهات بلغة الجافا
لدي أكثر من واجهه يتم الوصول إليها عن طريق أزرار في الواجهه الرئيسية
هل بإمكانكم توضيح كيف استطيع التنقل بين الواجهات أو ارفاق مثال
وأكون شاااااااكرة لكم
اهلين اختي اسراااء
الله يسعدك يا اختي مررررررررررة شكرا الطريقه وااضحة ان شااء الله وبطبقيها وبعلمك بالنتيجة...
ارفقت لك صورة output والايقونااات جنب بعض اود منك ياعزيزتي اخبااري كيف ان اجعل كل ايقونة بسطر منفصل
فأنا الان أووووول مرررة أتعامل مع واجهاات ..فاعذريني على الازعاج
وهذا الكوود
package GP;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
public class AgentGuiImpl extends JFrame implements AgentGUI {
private UserAgent myAgent;
private JButton Login,About,Exit;
private JTextArea log;
public void setAgent(UserAgent a) {
myAgent = a;
setTitle("zona");
}
public AgentGuiImpl() {
super();
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
myAgent.doDelete();
}
} );
JPanel Panel = new JPanel();
Panel.setLayout(new GridBagLayout());
Panel.setMinimumSize(new Dimension(500, 300));
Panel.setPreferredSize(new Dimension(500, 300));
///////////
// Line 0
///////////
ImageIcon image = new ImageIcon("images/logo.gif");
JLabel ImageLabel = new JLabel(image);
GridBagConstraints gridBagConstraints = new GridBagConstraints();
ImageLabel.setMinimumSize(new Dimension(70, 20));
ImageLabel.setPreferredSize(new Dimension(70, 20));
gridBagConstraints.gridx=0;
gridBagConstraints.gridy=0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
gridBagConstraints.insets = new Insets(5, 3, 0, 3);
Panel.add(ImageLabel, gridBagConstraints);
/////////////////////////////////////////////////////////////////
// Line 1
///////////
Login = new JButton("Login");
Login.setMinimumSize(new Dimension(70, 20));
Login.setPreferredSize(new Dimension(70, 20));
Login.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
//show login interface
}
});
GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
gridBagConstraints.gridx=0;
gridBagConstraints.gridy=1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
gridBagConstraints.insets = new Insets(5, 3, 0, 3);
Panel.add(Login, gridBagConstraints);
/////////////////////////////////////////////////////////////////
// Line 2
///////////
About = new JButton("About");
About.setMinimumSize(new Dimension(70, 20));
About.setPreferredSize(new Dimension(70, 20));
About.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
//show About interface
}
});
GridBagConstraints gridBagConstraints2 = new GridBagConstraints();
gridBagConstraints.gridx=4;
gridBagConstraints.gridy=2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.CENTER;
gridBagConstraints.insets = new Insets(5, 3, 0, 3);
Panel.add(About, gridBagConstraints);
///////////////////////////////////////////////////////////////////////////////////
// Line 3
///////////
Exit = new JButton("Exit");
GridBagConstraints gridBagConstraints3 = new GridBagConstraints();
gridBagConstraints.gridx=0;
gridBagConstraints.gridy=3;
gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTH;
gridBagConstraints.insets = new Insets(5, 3, 0, 3);
Exit.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
myAgent.doDelete();
}
} );
About.setPreferredSize(Login.getPreferredSize());
Exit.setPreferredSize(Login.getPreferredSize());
Panel.add(Login, gridBagConstraints1);
Panel.add(About, gridBagConstraints2);
Panel.add(Exit, gridBagConstraints3);
Panel.setBorder(new BevelBorder(BevelBorder.LOWERED));
getContentPane().add(Panel, BorderLayout.CENTER);
pack();//for drawing
setResizable(false);
}
public void AgentLog(String message) {
log.append(message+"\n");
}
}صورة للرن
اهلين اختي اسراااء
الله يسعدك يا اختي مررررررررررة شكرا الطريقه وااضحة ان شااء الله وبطبقيها وبعلمك بالنتيجة...
ارفقت لك صورة output والايقونااات جنب بعض اود منك ياعزيزتي اخبااري كيف ان اجعل كل ايقونة بسطر منفصل
فأنا الان أووووول مرررة أتعامل مع واجهاات ..فاعذريني على الازعاج
وهذا الكوود
package GP;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
public class AgentGuiImpl extends JFrame implements AgentGUI {
private UserAgent myAgent;
private JButton Login,About,Exit;
private JTextArea log;
public void setAgent(UserAgent a) {
myAgent = a;
setTitle("zona");
}
public AgentGuiImpl() {
super();
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
myAgent.doDelete();
}
} );
JPanel Panel = new JPanel();
Panel.setLayout(new GridBagLayout());
Panel.setMinimumSize(new Dimension(500, 300));
Panel.setPreferredSize(new Dimension(500, 300));
///////////
// Line 0
///////////
ImageIcon image = new ImageIcon("images/logo.gif");
JLabel ImageLabel = new JLabel(image);
GridBagConstraints gridBagConstraints = new GridBagConstraints();
ImageLabel.setMinimumSize(new Dimension(70, 20));
ImageLabel.setPreferredSize(new Dimension(70, 20));
gridBagConstraints.gridx=0;
gridBagConstraints.gridy=0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
gridBagConstraints.insets = new Insets(5, 3, 0, 3);
Panel.add(ImageLabel, gridBagConstraints);
/////////////////////////////////////////////////////////////////
// Line 1
///////////
Login = new JButton("Login");
Login.setMinimumSize(new Dimension(70, 20));
Login.setPreferredSize(new Dimension(70, 20));
Login.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
//show login interface
}
});
GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
gridBagConstraints.gridx=0;
gridBagConstraints.gridy=1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
gridBagConstraints.insets = new Insets(5, 3, 0, 3);
Panel.add(Login, gridBagConstraints);
/////////////////////////////////////////////////////////////////
// Line 2
///////////
About = new JButton("About");
About.setMinimumSize(new Dimension(70, 20));
About.setPreferredSize(new Dimension(70, 20));
About.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
//show About interface
}
});
GridBagConstraints gridBagConstraints2 = new GridBagConstraints();
gridBagConstraints.gridx=4;
gridBagConstraints.gridy=2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.CENTER;
gridBagConstraints.insets = new Insets(5, 3, 0, 3);
Panel.add(About, gridBagConstraints);
///////////////////////////////////////////////////////////////////////////////////
// Line 3
///////////
Exit = new JButton("Exit");
GridBagConstraints gridBagConstraints3 = new GridBagConstraints();
gridBagConstraints.gridx=0;
gridBagConstraints.gridy=3;
gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTH;
gridBagConstraints.insets = new Insets(5, 3, 0, 3);
Exit.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
myAgent.doDelete();
}
} );
About.setPreferredSize(Login.getPreferredSize());
Exit.setPreferredSize(Login.getPreferredSize());
Panel.add(Login, gridBagConstraints1);
Panel.add(About, gridBagConstraints2);
Panel.add(Exit, gridBagConstraints3);
Panel.setBorder(new BevelBorder(BevelBorder.LOWERED));
getContentPane().add(Panel, BorderLayout.CENTER);
pack();//for drawing
setResizable(false);
}
public void AgentLog(String message) {
log.append(message+"\n");
}
}صورة للرن
وأود ان تكون الايقونات للواجهه بهذا الشكل
وعليكم السلام والرحمة
ايوه الكود يدوي كتبته في برنامج eclipse
السلام عليكم
بصى يا اختى
الجملة دى
P
anel.setLayout(new GridBagLayout());
ال GridBagLayout دة بيجعل الpanel بتاعك كأنه شبكة لها عدد من الصفوف و عدد من الاعمدة
المفروض تحددى عدد الصفوف بتاعك فى الكود كدة
Panel.setLayout(new GridBagLayout(3,1,2,2));
هنا انا عملت 3 صفوف و عمود واحد حسب ما انتى عايزة
اما الرقمبن 2و2 هما بيمثلوا المسافة بين المكونات بتاعة ال panel بتاعى
ووو بس خلاص
ملحوظة:::
لو عندك اكتر من panel فى البرنامج اتاكدى ان التغيير دة بتعمل على البانل اللى هضيفى عليه الازرار بتاعتك
اتمنى اكون افدك,,,,,,,بجد صعولة كبيرة فى قراءة كود غير يكون كاتبه
تم تعديل هذه المشاركة بواسطة اسراء شلبى في 2 أبريل 2010 في 20:30


أظن أنك تتكلمين عن GridLayout وليس GridBagLayout
GridBagLayout هو layout manager معقد جدا، وللحصول على واجهة بسيطة يلزم كتابة سطور كثيرة. لذلك يفضل استعمال layout manager آخر مثل GridLayout أو BoxLayout ...
كلامك صحيح اخى الكريم
ما اخدتش بالى و الله!!!
اعتقد ان الموضوع ليس معقدااا و لا حاجة
دة الكود:::
JPanel Panel = new JPanel(); panel.setLayout(new GridLayout (3,1,2,2)); panel.add(Login); panel.add(About); panel.add(Exite);


الله يسعدك حبيبتي .. طبقت هالجملة مثل ماقال الأخ JustPassing
Panel.setLayout(new GridLayout(3,1,2,2));
وطلعلي الرن بهذا الشكل وأنا اريد الايقونات تحت بعض
ومشكلة اخرى وهي انني عندما أضغط على زر login
تفتح معي النافذة الخاصه بالـ login لكن عندما اريد اغلاق النافذه حق
login (الضغط على علامة X) لا يرضى
تم تعديل هذه المشاركة بواسطة zona في 2 أبريل 2010 في 20:58
أختي zona , لماذا لاتستخدمي frameworks غير SWING , GWT مثلا ؟؟
zona كتب:تفتح معي النافذة الخاصه بالـ login لكن عندما اريد اغلاق النافذه حق
login (الضغط على علامة X) لا يرضى
إذا كانت الكلاس الخاصة بال login ترث من JFrame، يمكنك إضافة السطر التالي إلى ال constructor، وستقفل النافذة عند الضغط على الزر x
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
اخي هويدي أنا مبدئة في الواجهاات وجالسه الان أحاكي كود
فلم أفهم ماهي SWING
===================================================================
باااارك الله فيك اخي جست باسينق
يبدو اننا قريبين من الحل اضفتها لكن لم يحدث شيئا ربما وضعتها في مكان خطأ
هذا كود login واخبرني في أي مكان أضع الجملة ؟؟؟
package GP;
import jade.gui.TimeChooser;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Date;
import javax.swing.*;
import javax.swing.border.BevelBorder;
public class Login extends JFrame implements AgentGUI{
private UserAgent myAgent;
private JTextField name, password;
private JButton Login,NewUser;
public void setAgent(UserAgent a) {
myAgent = a;
setTitle("::Login");
}
public Login() {
super();
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
myAgent.doDelete();
}
} );
JPanel Panel = new JPanel();
Panel.setLayout(new GridBagLayout());
Panel.setMinimumSize(new Dimension(400, 300));
Panel.setPreferredSize(new Dimension(400, 300));
///////////
// Line 0
///////////
JLabel Label = new JLabel("Name: ");
Label.setHorizontalAlignment(SwingConstants.LEFT);
GridBagConstraints gridBagConstraints = new GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new java.awt.Insets(5, 3, 0, 3);//Insets(int top, int left, int bottom, int right)
Panel.add(Label, gridBagConstraints);
name = new JTextField(64);
name.setMinimumSize(new Dimension(100, 20));
name.setPreferredSize(new Dimension(100, 20));
gridBagConstraints = new GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 0;
gridBagConstraints.gridwidth = 3;
gridBagConstraints.anchor = GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new Insets(5, 3, 0, 3);
Panel.add(name, gridBagConstraints);
///////////
// Line 1
///////////
Label = new JLabel("Password:");
Label.setHorizontalAlignment(SwingConstants.LEFT);
gridBagConstraints = new GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new java.awt.Insets(5, 3, 0, 3);
Panel.add(Label, gridBagConstraints);
password = new JTextField(64);
password.setMinimumSize(new Dimension(100, 20));
password.setPreferredSize(new Dimension(100, 20));
gridBagConstraints = new GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new Insets(5, 3, 0, 3);
Panel.add(password, gridBagConstraints);
///////////
// Line 2
///////////
Login = new JButton("Login");
Login.setMinimumSize(new Dimension(70, 20));
Login.setPreferredSize(new Dimension(70, 20));
Login.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
//call db login..
}
});
gridBagConstraints = new GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 2;
gridBagConstraints.anchor = GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new Insets(5, 3, 0, 3);
Panel.add(Login, gridBagConstraints);
NewUser = new JButton("New User");
NewUser.setMinimumSize(new Dimension(100, 20));
NewUser.setPreferredSize(new Dimension(100, 20));
NewUser.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
SignUp newSignUp=new SignUp();
newSignUp.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
newSignUp.setLocationRelativeTo(null);
newSignUp.setSize(300,300);
newSignUp.setVisible(true);
}
});
gridBagConstraints = new GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.anchor = GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new Insets(5, 3, 0, 3);
Panel.add(NewUser, gridBagConstraints);
Panel.setBorder(new BevelBorder(BevelBorder.LOWERED));
getContentPane().add(Panel, BorderLayout.CENTER);
pack();//for drawing
setResizable(false);
}
}مشكلة اخرى وهي عندما تفتح الواجهه الخاصة بال login
لا يظهرلي العنوان ( Title)
افتوني مأجوووووورين
تم حل المشكلة عن طريق هذا هذا الأمر
public void windowClosing(WindowEvent e) {
if (myAgent != null )
{
myAgent.doDelete();
}باارك الله فيكم جميعا ..
لدي سؤال اخر عندما أشغل كل واجهه بمفردها تضبط معي لكن عندما أريد أن أشغلها من الواجهه الرئيسيه ماتشتغل الأزرار ؟؟
سؤال ثاني ..في احدى الواجهات عرفت TextArea
وأريد أن استرجع شيئ من الداتا بيس وينعرض داخل هذه TextArea
كانت طريقتي أنني في الكلاس الواجهه أنشأت متغير defintion من نوع textarea
واستخدمت هذه الفانكشن لتطبع ماجاها من البراميتر داخل مربع text area
اقتباسpublic void FillDef(String def) {
definition.append(def+"\n");
}
لم يضهرلي شيئ داخل مربع textarea فأريد حل أخر ؟؟
وبارك الله فيكم
استخدمى هذة الدالة
public void setText(String t)
اقتباسلدي سؤال اخر عندما أشغل كل واجهه بمفردها تضبط معي لكن عندما أريد أن أشغلها من الواجهه الرئيسيه ماتشتغل الأزرار ؟؟
انتى جربتى الطريقة اللى انا قولت عليها اتاكدى ان مافيش خطأ لان مافيش حل تانى
تم تعديل هذه المشاركة بواسطة اسراء شلبى في 3 أبريل 2010 في 22:06


يعطيكي العافية اخت اسراء شلبي.. في التطبيق اللي وضعتيه رأيت الاكشن بيرفورمنس (ActionPerformed)ل go ولكن لم افهم بعض الامور.. t.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);هذه الكود لماذا استخدم اعتقد انه لإغلاق النافذه السابقة ,,, لكن لم يغلقها . // t.setLocationRelativeTo(null); وهذا كمان t.setSize(500,30;هذا فهمته من اجل تحديد حجم فريم اللي سوف يظهر t.setVisible(true);هذا لظهور لفريم ..ارجو شرح ال السطرين السابقين
اقتباسيعطيكي العافية
الله يعافيك :lol:
t.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE)
اقتباس;هذه الكود لماذا استخدم اعتقد انه لإغلاق النافذه السابقة ,,, لكن لم يغلقها
اخى الكريم خطأ
هذا الكود ليس لاغلاق الواجهة السابقة و لا التالية
فى هذا الكود انت تضع اسلوب default لطريقة غلق النافذة التى انت بها
يعنى يغلقها كما نغلق بقية البرامج فى الدنيا الكبيرة الوحشة دى
من علامة x الحمراء فى اعلى البرنامج
اما عن هذا الكود
t.setLocationRelativeTo(null);
فهو يستخدم لاظهار الواجهة فى منتصف الشاشة
لو مسحت هذا الكود ستجد ان الواجهة ستظهر فى اقصى الشمال الغربى فى الشاشة من فوق على ايديك الشمال و انت داخل على الصالة
من الممكن ان تضع لها قيم معينة تظهر الواجهة فيها و اعتقد انك لو فتحت الكتاب اللى على المكتب اللى مش بيتفتح خالص<<<عرفتى منين :
lol:هتقى يوجد فصل للجرافيكس يوضح لك تقسيم الشاشة و خلافة
t.setSize(500,30
هذا فعلا من اجل تحديد الحجم


عفوا اخى لم انتبه الى نقطة معينه
انتى طبعا تعرف ان ال tما هو الا عبارة عن object من ال class الى يدعى test
و عندما انادية يجب ان اضع له بعض الخصائص معينة
مثل اين يظهر كما وضحت سابقا,,الحجم,,,,كيفية غلق النافذة,,,,و هكذا
لو تريد ان تغلق النافذة السابقة
اكتب هذة فى نهاية الكود المضاف (ActionPerformed
setVisible(false);
و ارنى النتيجة
ستجد ان النافذة home page اختفت
تم تعديل هذه المشاركة بواسطة اسراء شلبى في 25 مايو 2010 في 22:45


للأمانة ..بارك الله فيكـ فعلا حصلت على معلومات جديدة ومهمة لتطبيق مشروعي ..لاني سابقا كنت عاملهم في نفس الفيرم ولكن عامل عدة بنيل ... لكن هاي الطريقة رح تخلي البرنامج اكثر فعالية ..ز
له ولو كل التحية...
بدي اغلبك من مرة
عندي هدا السؤال في بالنسبة للفور
شو الفرق بين
GridLayout
و \flowLayot
والBordLayout
حسب معلوماتي لكن لست متأكد
ان Grid بقسم الشاشة الى صفوف واعندة حسب ما قلتي
وال bord بقسم الفريم الى شرق وغرب وشمال وجنوب ومركز
Flow هاي نسيت لأيش بستخدموها...
ال flow تقوم بوضع مكونات الواجهة بالترتيب حسب اضافتها من اليسار الى اليمين
و هى تعتمد على حجم الframe يعنى
تضع المكونات بجوار بعضها البعض و عندما تصل الى حد او حرف ال frame تقوم بالنزول الى الصف التالى و هكذا
بأمكانك الاطلاع على الكود فى المرفقات و قم بتغيير حجم الواجهة عن طريق
السحب بالماوس
عن طريق الاسهم الجانبية يعنى
تمنى تكون فهمت قصدى
و لا حظ ما يحد اثناء تغيير الحجم
تم تعديل هذه المشاركة بواسطة اسراء شلبى في 26 مايو 2010 في 00:07


يعطيكي العافية
بالنسبة للموضوع القبل ,,
هلأ لما كنا ننتقل من JFream لا خر نعمل في الفريم الاصلي بناء للفريم الاخر لنفرض ان اسمه ADD كنا نعمل في الفريم الاصلي ADD a=new ADD(); و a.setviseble(true)
طب هلأ السؤال كيف ممكن ننتقل من هذا الفريم الى لفريم الرئيسي ,,,
مع اني جربت نفس الطريقة للذهاب الى فريم ثانوي لكن لم ينفع ,,
Eng.S.IDk كتب:يعطيكي العافية
بالنسبة للموضوع القبل ,,
هلأ لما كنا ننتقل من JFream لا خر نعمل في الفريم الاصلي بناء للفريم الاخر لنفرض ان اسمه ADD كنا نعمل في الفريم الاصلي ADD a=new ADD(); و a.setviseble(true)
طب هلأ السؤال كيف ممكن ننتقل من هذا الفريم الى لفريم الرئيسي ,,,
مع اني جربت نفس الطريقة للذهاب الى فريم ثانوي لكن لم ينفع ,,
السلام عليكم اخى الكريم
لعلى اكون فهمت قصدك من السوال
تفضل مثال على الانتقال بين اطارين
بالمرفقات
لا تنسانا فى دعاءك يا اخى
تحياتى