استدعاء فرام من فرام اخر علية Button بدون تكرار فتح الفرام الثاني كل ما يتم الضغط علي ال Button
استدعاء فرام
أعتقد أنه يمكنك فعل هذا باستخدام ال singletone pattern
انا مش عارف اذا كنت فهمتك صح ولا لا ياريت تبقى توضح كلامك شوية
على العموم من اللى انا فهمته انت عاوز حل يخلى الuser مايفتحش الفريم التانية مرة اخرى
انك تجعل Action للbutton يفتح الفريمة اللى انت عاوزها وبعد كده تكتب
b1.setEnabled(false);
على اساس ان اسم Button b1
الميثود دى Make the button inactve وبكده مش هيقدر الuser يفتح الفريم دى مرة تانية
ولو حبيت بعد ماتقفل الفريم يبقى ممكن لل user يفتح الفريم تانى
b1.setEnabled(true);
ممكن اخى مبتدئ جافا توضح singletone pattern
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);
}
}اعذروا ردي المتأخر:
" يهدف النموذج 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 " );
}
}Prefect explanation my dear friend
Best regards
هذا الموضوع مغلق.