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

لدي مشكلة في Swing

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

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

انا حالياً بتعلم swing و حطيت زرين و لم يضهر الا واحد غير اريد معرفة كيف يمكنوني ربط الزر الاول بحدث مثل تغير عنوان الفريم و الثاني اضهار رسالة او تغير لون الخلفية

و هذي تجربتي

package swingbutton;
import javax.swing.*;

public class Main {


	public static void main(String[] args) {
	JFrame f1 = new JFrame("Hello word");

	JButton  b1 = new  JButton("Hello mr");
	JButton b2 = new JButton("Hello mrs");

	f1.getContentPane().add(b1);
	f1.getContentPane().add(b2);

	f1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	f1.setVisible(true);
	f1.pack();
	}

}

نسيت اقول انا استخدم نتبانز و اريد اتعلم كل شي بالكود قبل ادخل على ide

Mail : pc-moon@hotmail.com

من تواضع لله رفعه

قل خيرا أو اصمت

#2

الحزمة swing تستخدم منظم محتوى LayoutManager افتراضي يسمى BorderLayout

هذا المنظم يقسم الشاشة إلى أربعة أقسام

شمال جنوب

شرق غرب

وسط

عند إضافة مكون component جديد فإنه يقوم بإضافتها في المكان الذي تحدده أنت

إن لم تقوم بتحديد مكان معين فسيضيف المكون تلقائياً في الوسط

وهذا يفسر لماذا لم يظهر إلى الزر JButton الأخير

لحل هذه المشكلة مؤقتاً استخدم السطر التالي

f1.setLayout(new FlowLyout());

تحياتي

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

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

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

728x90.png

#3

السلام عليكم

بخصوص

اقتباس
ربط الزر الاول بحدث مثل تغير عنوان الفريم و الثاني اضهار رسالة او تغير لون الخلفية

قم بعمل implement لل actionListener الموجود فى الحزمة java.awt.event

ثم قم بعمل ovrid لهذه ال Methd

	public void actionPerformed(ActionEvent e) {
	 // ضع ماتريد هنا
	}

ثم استخدم ال Method addActionListener الموجودة فى JButton

addActionListener(this);

ليصبح شكل الكود فى النهاية كالتالي

import javax.swing.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;



public class form implements ActionListener {

	private JButton b1 , b2;

	form()
	 {
	JFrame  f1 = new JFrame("Hello word");

	b1 = new  JButton("Hello mr");
	b2 = new JButton("Hello mrs");

	f1.getContentPane().add(b1);
	f1.getContentPane().add(b2);

	f1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	f1.setVisible(true);
	f1.pack();

	 b1.addActionListener(this);
	 b2.addActionListener(this);
	 }

	 public void actionPerformed(ActionEvent e) {
		  if(e.getSource() == b1)
		  {
			  // نفذ ما تريد من b1
			  System.out.println("Hello world b1");
		  }
		  else if(e.getSource() == b2)
		  {
			  // نفذ ما تريد من b2
			  System.out.println("Hello world b2");
		  }
	}
}

هناك طريقة اسهل و هى تعريف ال ActionListener ك inner class كالتالي ::

b1.addActionListener(new ActionListener() {
void actionPerformed(ActionEvent e)
{
		// نفذ ما تريد
}

});

نصيحة : ابحث عن Event Handling ( معالجة الحدث فى الجافا ) لتعرف اساسيات هذا الموضوع

تم تعديل هذه المشاركة بواسطة sameh mahmoud في 3 سبتمبر 2009 في 00:39

سبـــــحــــان الله و بحمده سبحان الله العظيم

403100468.gif

#4

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

شكراً لمساعدتكم لي

عزيزي علاء

شكراً لك اولاً

اعذرني اتمنى شرحها اكثر او ربطها مع الكود لاني بحث و لم اتمكن من فهمها

setLayout(new FlowLyout()

اختي سماح

شكراً لك مرة اخرى

لا اعلم فانا منتقل من vb.net الى java و انا جديد فيها و في خطاء يضهر لدي في برنامج نتبانز و هوا

public class form implements ActionListener

لا اعلم ماهوا السبب انا نسختة

و سوف ابحث و استذيد باذن الله

و شكراً على النصيحة

Mail : pc-moon@hotmail.com

من تواضع لله رفعه

قل خيرا أو اصمت

#5

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

السلام عليكم يا أخي هدا نموذج جيد لما تريد شغال 100/100برمجته من أجلك بالتوفيق :


static boolean bo1=true;
static boolean bo2=true;
/** Creates new form pcmoon */
public pcmoon() {
initComponents();
}

/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

jp = new javax.swing.JPanel();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

jButton1.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jButton1.setText("تغير اللون");
jButton1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jButton1MouseClicked(evt);
}
});
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});

jButton2.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jButton2.setText("تغير العنوان");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});

javax.swing.GroupLayout jpLayout = new javax.swing.GroupLayout(jp);
jp.setLayout(jpLayout);
jpLayout.setHorizontalGroup(
jpLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jpLayout.createSequentialGroup()
.addGap(30, 30, 30)
.addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 134, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 154, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(64, Short.MAX_VALUE))
);
jpLayout.setVerticalGroup(
jpLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jpLayout.createSequentialGroup()
.addContainerGap(245, Short.MAX_VALUE)
.addGroup(jpLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton1)
.addComponent(jButton2))
.addContainerGap())
);

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jp, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jp, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
);

pack();
}// </editor-fold>

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
if(bo1==true){
jp.setBackground(java.awt.Color.GREEN);
bo1=false;
}
else if(bo1==false){
jp.setBackground(java.awt.Color.RED);
bo1=true;
}

}

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
if(bo2==true){
this.setTitle("pcmoon");
bo2=false;
}
else if(bo2==false){
this.setTitle("hi..hi..hi..hi..hi..");
bo2=true;
}
}

private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {

}

/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new pcmoon().setVisible(true);
}
});
}

// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JPanel jp;
// End of variables declaration

}
public class pcmoon extends javax.swing.JFrame {

يمكنك تحميل ملف المشروع كاملا للفهم أكثر وفقك الله

cod_sour.rar

#6

الواجهات في الجافا تعتمد على الLayout Manager لتنسيق مكوناتها

FlowLayout يقوم بوضع المكونات واحدا جنب الآخر أفقيا

f1.setLayout(new FlowLayout());

هذا السطر يعني أن ال f1 ستستعمل Layout manager من صنف FlowLayout، يعني أن كل المكونات التي ستضيفها لf1 ستكون جنب بعضها البعض أفقيا

للمزيد من الشرح http://java.sun.com/docs/books/tutorial/ui...ayout/flow.html

لربط الزر بحدث ما، يجب استعمال الActionListener و كتابة ما تريده أن يقع عند الضغط على الزر داخل الميثود actionPerformed


btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
//your code here
}
});
   JButton btn = new JButton("Button");

للمزيد من الشرح http://java.sun.com/docs/books/tutorial/ui...onlistener.html

#7

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

شكراً اخي الفاضل

لا اعلم ياتيني خط تحت FlowLayout

و سوف اجرب الاحداث و ارجع لوريكم نتائجي

Mail : pc-moon@hotmail.com

من تواضع لله رفعه

قل خيرا أو اصمت

#8

اسف كان ينقصني تعريف مكتبة

import java.awt.*;

و الحمد لله زبطت

و سوف اتقدم للخطوة التالية

Mail : pc-moon@hotmail.com

من تواضع لله رفعه

قل خيرا أو اصمت

#9

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

اسف اخي لمن الحظ ردك لاني احب التعلم و مع الردود لم الحظ ردك اسف اخ ouabida

اشكرك اخي الفاضل و الطيب و اعذرني صدقني هذا كلة من العجلة

صراحة حملت السورس كود بس ماعرفت اشغله مع البرنامج

و حاولت نسخ الكود تضهر لي مشكلة في

public class pcmoon extends javax.swing.JFrame {

لا اعلم اين المشكلة

و شكراً لمن ساعدني اريد التعلم فقط اعطاكم الله الخير يارب

انا بنتضار الى ان افهم الاحداث و يعطيكم الله العافية

و السلام عليكم

Mail : pc-moon@hotmail.com

من تواضع لله رفعه

قل خيرا أو اصمت

#10

تأكد من أن اسم الملف هو pcmoon.java ، أو اجعل اسم الملف كما في مثالك Main.java ثم غير عباره pcmoon في السطر الذي فيه الخطأ بMain.

بالتوفيق ،

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#11

سماح مين بس يا pcmoon انا سامح

ممكن توضح لنا رسالة الخطأ الظاهرة لك ؟؟

تم تعديل هذه المشاركة بواسطة sameh mahmoud في 2 سبتمبر 2009 في 13:35

سبـــــحــــان الله و بحمده سبحان الله العظيم

403100468.gif

#12

اسلام أخي العزيز

إدا كنت تستعمل netbeans يمكنك فتح الملف كمشروع جديد بالتباع الخطوات التالية :

fichier---> open Project

تم قم بإرشاد البرنامج إلى الملف

بالتوفيق

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