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

مشكلة فى ظهور ال JDeskTopPane & JinternalFrame

بدأه mr.beshoy في 13 فبراير 2011 · 7 رد · 634 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

ما أعرفه أن ال JDeskTopPane & JinternalFrame لابد من استخدامهما معاً . صح كده ؟؟

وصف لمشكلتى :

--------------------------

لدىَّ زرار عندما أضغط عليه أريد أن يظهر ال JInternalFrame و بداخلها أضع ما أريده من مكونات .

للأسف لم يحدث سوى أن تظهر شاشة بيضاء و أعتقد إنها ال JDeskTopPane

الكود مرفق .

شكراً

DeskTopPan.rar

#2

فى الكلاس MyDeskTopPaneايه فائده هذا الكائن

private JDesktopPane desktopPane = new JDesktopPane();

وانت ترث منه فى نفس الكلاس

وقم بحذف

desktopPane.add(internalFrame);
        add(desktopPane);

وضع مكانها

add(internalFrame);

وفى الكلاس DeskTopPaneTest

تم تعديل بعض الـLayouts للمكونات

هذا هو الكود

/**
 *
 * @author a
 */
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class DeskTopPaneTest extends JFrame {

    private JPanel panel = new JPanel();
    private JButton button = new JButton("test");
    private MyDeskTopPane dp;

    public DeskTopPaneTest() {
        panel.add(button);
        add(panel, BorderLayout.NORTH);
        dp = new MyDeskTopPane();
        button.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                add(dp, BorderLayout.CENTER);

            }
        });
    }

    public static void main(String[] args) {
        DeskTopPaneTest f = new DeskTopPaneTest();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setSize(600, 300);
        f.setVisible(true);
        f.setExtendedState(MAXIMIZED_BOTH);
    }
}

/**
 *
 * @author a
 */
import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JDesktopPane;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;

class MyDeskTopPane extends JDesktopPane {

    private JInternalFrame internalFrame = null;
    private JLabel label = new JLabel("Internal Frame");

    public MyDeskTopPane() {
        internalFrame = new JInternalFrame("Internal Frame", true, true, true, true);
        internalFrame.setSize(new Dimension(600, 300));
        internalFrame.add(label, BorderLayout.CENTER);
        internalFrame.setVisible(true);
        add(internalFrame);
    }
}

بالتوفيق :)

Software Developer
Mahmoudkelany.com


 

#3

شكراً يا باشا

طب إزاى لما أغلق ال Internal frame تختفى ال deskTopPane ??

انا جربت أعمل كده فى ال class DeskTopPaneTest :

        button.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                add(new MyDeskTopPane());
                if (new MyDeskTopPane().getInternalFrame().isClosed()) {
                    new MyDeskTopPane().setVisible(false);
                }
            }
        });

و فى ال clss MyDeskTopPane أضفت الدالة دى :

    public JInternalFrame getInternalFrame() {
        return internalFrame;
    }

بس مش بتختفى !!

#4

انا لسه مش جربت الكود الخاص بالاغلاق

لكن من الكود الذى كتبته

انك قومت باضافه كائن جديد

قومت باستخدام شرط الـif على كائن جديد اخر

وقومت بعمل setVisible على كائن جديد اخر

بالتالى هناك 3 كائنات

هاشوف الكود وارفقه ليك

تم تعديل هذه المشاركة بواسطة Mahmoud Kelany في 13 فبراير 2011 في 20:57

Software Developer
Mahmoudkelany.com


 

#5

عدل الكونستراكتور الخاص بال DeskTopPaneTest كلاس

public DeskTopPaneTest() {
        panel.add(button);
        add(panel, BorderLayout.NORTH);

        button.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                dp = new MyDeskTopPane();
                add(dp, BorderLayout.CENTER);
                dp.setVisible(true);
                dp.getInternalFrame().addInternalFrameListener(new InternalFrameAdapter() {

                    @Override
                    public void internalFrameClosing(InternalFrameEvent e) {
                        dp.setVisible(false);
                    }
                });
            }
        });

    }

Software Developer
Mahmoudkelany.com


 

#6

شكرا ً على ردك . و ادركت خطأى .

و لكن هناك مشكلة أخرى و هى :

لدى Frame أضفت عليها panel عليها زر ، و عند الضغط على الزر تظهر panel أخرى عليها زر عند الضغط عليه يجب أن تظهر ال DeskTopPane و لكنها لا تظهر بل تظهر نقط صغيرة جداً طبقت نفس الخطوات السابقة لكن مش عارف ايه السبب :wacko:

الكود مرفق .

معلش انا عارف ان سوالى مش ولابد بس استحملنى

TestDeskTop.rar

#7

بيشوي تعرف النظام كل سؤال في موضوع

سأتجاوز هذه المرة لكن التزم في المرة القادمة

تحياتي

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

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

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

728x90.png

#8

علاء أستاذنا الفاضل :)

شوف يا أستاذ كنت هعمل كده صدقنى ، لكن لما لقيت أنه متعلق بنفس القضية قولت مفيش مانع من وضعه فى نفس الموضوع

عن غير قصد يعنى .

لكن هعزله مخصوص ياعم و لا تزعل نفسك .

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