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

استدعاء فرام

مغلق
بدأه cmx_waled في 14 يوليو 2007 · 6 رد · 766 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

استدعاء فرام من فرام اخر علية Button بدون تكرار فتح الفرام الثاني كل ما يتم الضغط علي ال Button

#2

أعتقد أنه يمكنك فعل هذا باستخدام ال singletone pattern

#3

انا مش عارف اذا كنت فهمتك صح ولا لا ياريت تبقى توضح كلامك شوية

على العموم من اللى انا فهمته انت عاوز حل يخلى الuser مايفتحش الفريم التانية مرة اخرى

انك تجعل Action للbutton يفتح الفريمة اللى انت عاوزها وبعد كده تكتب

b1.setEnabled(false);

على اساس ان اسم Button b1

الميثود دى Make the button inactve وبكده مش هيقدر الuser يفتح الفريم دى مرة تانية

ولو حبيت بعد ماتقفل الفريم يبقى ممكن لل user يفتح الفريم تانى

b1.setEnabled(true);
#4

ممكن اخى مبتدئ جافا توضح singletone pattern

#5
import javax.swing.*;
import java.awt.*;

public class SingletoneFrame extends JFrame {

	// 1- making a static var. of the type of the frame
	private static SingletoneFrame singletoneFrame;

	//2- make the constructor private
	private SingletoneFrame(String title){
		super ( title);
		Container c = getContentPane();
		//add components here 
		//..
		//...
	}

	// 3- make the singletone frame that return unique instance, just one instance of the frame 
	public static SingletoneFrame getInstance (){
		// if no objects exists for this frame
		if ( singletoneFrame == null){
			// create new one; note : this will be reached only at the first time
			singletoneFrame = new SingletoneFrame("the second frame");
		}
		return singletoneFrame;
	}
}

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

public class TestFrame extends JFrame{
	private JButton b;

	public TestFrame (){
		super ( "the first frame");
		b = new JButton ("invoke second frame");
		getContentPane().add ( b, BorderLayout.NORTH );
		b.addActionListener ( new ActionListener (){
			public void actionPerformed (ActionEvent e){
				doInvokeSecondFrame();
			}
		} );
		setSize ( 300, 300 );
		setVisible( true);
	}

	public static void main (String[] args){
		new TestFrame().setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
	}

	public void doInvokeSecondFrame(){
		SingletoneFrame frm = SingletoneFrame.getInstance();
		frm.setSize ( 300, 300);
		frm.setVisible (true);
	}
}
#6

اعذروا ردي المتأخر:

" يهدف النموذج Singletone (المفرد) على تأكيد على وجود غرض واحد وواحد فقط من صف ما.

وكمثال حي على ذلك, الولوج إلى النظام LogIn على جهاز حاسوب شخصي يمتلكه شخص واحد فقط, طبعا هذا يتطلب ادخال كل من كلمة السر واسم المستخدم (كل منهما مفرد و فريد) .

لانجاز ذلك فان الغرض من الفئة LogIn يجب أن يكون وحيداً ويتم ذلك يجب بأن يصرح عنه داخل الفئة نفسها بحيث يكون ساكناُ أي static كما أن المشيد لهذه الفئة يجب أن يكون خاصاً وليس عاماً بذلك لا نستطيع إنشاء غرض آخر عن هذه الفئة."

وهذا مثال يوضح ما سبق:

public class LogIn {

  private static String userName;
  private static String password;
  private static LogIn login;

  private LogIn(String n, String p) {
	userName = n;
	password = p;
  }

  public void setUserName(String n) {
	userName = n;
  }

  public void setPassword(String p) {
	password = p;
  }

  public static LogIn getLogIn(String n, String p) {
	String name = "kindaN";
	String pw = "kindaN";
	if (login == null) {
	  if ( (name.equalsIgnoreCase(n)) && (pw.equalsIgnoreCase(p))) {
		login = new LogIn(n, p);
		JOptionPane.showMessageDialog(null, "wellcome !" );
	  }
	  else {
		Error1();
	  }
	}
	else if (! (name.equalsIgnoreCase(n)) || ! (pw.equalsIgnoreCase(p))) {
	  Error1();
	  login = null;
	}

	return login;
  }

  public static void Error1() {
   JOptionPane.showMessageDialog(null, "there's no matching " );
  }
}
#7

Prefect explanation my dear friend

Best regards

هذا الموضوع مغلق.

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