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

طلب شرح عمل زر Back في مربع الحوار

بدأه A L - J O K E R في 30 أبريل 2013 · 5 رد · 1,091 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

انا جديد على لغة الجافا وبتعلمها بالجامعة : :)

واحنا الان بدنا نعمل مشروح وبدي مساعدة بشغلة بسيطة

الان صممنا واجهة ولمن نضغط مثلا اضافة كتاب

بيظهر مربع حوار جديد وفيه مكتوب تم اضافة الكتاب وموجود زر ok فقط !!

اريد طريقة اضافة زر back مع ok  وعند الضغط على زر back يعود للواجهة السابقة

وهي صورة لواجهة البرنامج

 

AiE38901.jpg

 

بتمنى تفيدوني اخواني

#2

يمكنك استعمال Jdialog بدل joptionpane وتخصيص الازرار حسب ما يناسب برنامجك

 

 

هذا مثال ل jdialog

 

 

import javax.swing.JDialog; 
import java.awt.event.ActionListener;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JButton;
import java.awt.event.ActionEvent;

public class CustomDialog extends JDialog implements ActionListener {
    private JPanel myPanel = null;
    private JButton yesButton = null;
    private JButton noButton = null;
    private boolean answer = false;
    public boolean getAnswer() { return answer; }

    public CustomDialog(JFrame frame, boolean modal, String myMessage) {
        super(frame, modal);
        myPanel = new JPanel();
        getContentPane().add(myPanel);
        myPanel.add(new JLabel(myMessage));
        yesButton = new JButton("Yes");
        yesButton.addActionListener(this);
        myPanel.add(yesButton); 
        noButton = new JButton("No");
        noButton.addActionListener(this);
        myPanel.add(noButton);  
        pack();
        setLocationRelativeTo(frame);
        setVisible(true);
    }

    public void actionPerformed(ActionEvent e) {
        if(yesButton == e.getSource()) {
            System.err.println("User chose yes.");
            answer = true;
            setVisible(false);
        }
        else if(noButton == e.getSource()) {
            System.err.println("User chose no.");
            answer = false;
            setVisible(false);
        }
    }
    
}

 

 

 

ويمكن مناداتها عن طريق السطر التالي

 

CustomDialog   c=new CustomDialog(null, true, "my message")  ;
      c.setVisible(true);

اتمنى ان اكون قد أفدتك

1
#3

@mohamed ajermoun

setVisible لا تُغلق الــ Frame و إنما تُظهره أو تُخفيه ..
تمرير القيمة false إلى الدالة setVisible يعني أن الــ Frame سيتم إخفاؤه لكنه يبقى قيد التشغيل و يستهلك مساحة من الذاكرة.

 

@A L - J O K E R

لإضافة زر جديد إلى showInputDialog يمكنك استخدام showOptionDialog مع JPanel يحتوي على JTextArea و JTextField هكذا :

 

 

import java.awt.BorderLayout;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class TestDialog {

    public static void main(String[] args) {
        Object[] options = {"OK", "Cancel", "Back"};

        JPanel panel = new JPanel(new BorderLayout());
        JTextArea text = new JTextArea("Please choose the foloowing option : \n"
                + "1- add book\n"
                + "2- delet book\n"
                + "3-update book\n"
                + "4-search\n"
                + "5-report\n"
                + "6-exit");
        text.setEditable(false);
        panel.add(text, BorderLayout.NORTH);
        JTextField textField = new JTextField(10);
        panel.add(textField, BorderLayout.SOUTH);

        int result = JOptionPane.showOptionDialog(null, panel, "Input",
                JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE,
                null, options, null);
        if (result == 2) {
            //...
        }
    }
}

 

 

 

 

 

تحياتي.

1
#4

يعطيكم العافية اخواني على جهدكم معي

اخ

mohamed ajermoun

انا ما بدي اساوي اشي كبير بدي اشي بسيط جدا

 

اخي 

Sn@CkeR

انا بشكرك عالكود لكن زر back ما بدي اياه يكون بالمكان الي انتا عاملو فيه

 

راح ادرج الكود يلي مساويه وبدي زر الـ back يكون في جمل الطباعة الموجودة في switch ..case

 

import javax.swing.*;
 
public class library {
    
    public static void main(String[] args) {

    	System.out.println("Hello World!");
    	String option = JOptionPane.showInputDialog("please choose the  foloowing option : \n	1- add book \n	2- delete book \n	3- update book \n	4- search \n	5- report \n	6- exit ");
		int option_val = Integer.parseInt(option);
		
		switch(option_val)
		{
			case 1 : JOptionPane.showMessageDialog(null,"the book is added"); 
				break;
			case 2 : JOptionPane.showMessageDialog(null,"the book is deleted"); 
				break;
			case 3 : JOptionPane.showMessageDialog(null,"the book is update"); 
				break;
			case 4 : JOptionPane.showMessageDialog(null,"the book is search"); 
				break;
    		case 5 : JOptionPane.showMessageDialog(null,"the book is report"); 
				break;
    		case 6 : System.exit(0);
    			
    		default :
    			JOptionPane.showMessageDialog(null,"please enter the a valid number"); 
				
		}
    }
    
    
}

يعني في جملة طباعة

 

	case 1 : JOptionPane.showMessageDialog(null,"the book is added"); 
				break;

اريد هنا ادراج زر back للرجوع للقائمة السابقة

 

وشكرا على جهودكم معي

#5

تفضل :

String[] options = {"Ok", "Back"};

...

result = JOptionPane.showOptionDialog(null, "The book is added", "Added",JOptionPane.YES_NO_CANCEL_OPTION,
         JOptionPane.PLAIN_MESSAGE, null, options, null);
if (result == 1) {
    JOptionPane.showInputDialog("Please choose the  foloowing option : \n"
    + "1- add book \n2- delete book \n3- exit ");
}
#6

شكرا اخي

Sn@CkeR

غلبتك معي ^_^

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

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

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

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

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