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

كيفية إضافة jscrollbar إلى JInternalFrame

بدأه mohammeding في 12 مايو 2011 · 17 رد · 830 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

وقعت في مشكل فلم أعرف كيف حل

هو أنني أريد إضافة jscrollbar إلى JInternalFrame بحيث أني وجدت كود كيفية إضافة jpanel ولكن أنا أريد لل jframe

وهاهي صورة jframe

post-163892-067430800 1305225694_thumb.j

أرجو مساعدة و شكرا

المرفقات
Capture.JPG
#2

بالنسبة للــ JInternalFrame يمكنك ان تضيف الــ scrollbar باستخدام دالة add()

ولكن للتحكم بالتنسيق يجب ان تعمل GroupLayout

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#3

هذه المشكله هى نفس المشكله التى بهذا الموضوع

انا حليتها قبل كدا ممكن حضرتك تشوفها

/index.php?showtopic=239409

بالتوفيق ان شاء الله

Software Developer
Mahmoudkelany.com


 

#4

مشكل هي أني لا أريد إستخدام jpanel للأن مشروع كاملا بني على jframe بحيث إذا قمت بتغير سيكلفني ذلك كثير

ولهذا أريد إضافة JScrollBar مباشرة في jframe

#5

اولا لا يكلفك ذلك كثير ولا شىء

ثانيا لا يسمح لك ان تضع الـ ScrollPane على الـFrame

مباشره بدون Panel

بمعنى اصح هيلقى لك خطأ

java.lang.IllegalArgumentException: adding a window to a container

فبالتالى لازم تعملها على Panel وتجعل الـ panel هى الـ Scroll

بالتوفيق

Software Developer
Mahmoudkelany.com


 

#6

طيب سؤال أخي

هل من الممكن اضافة ScrollPane الى صندوق حوار JOptionPane بحيث يبقى حجم صندوق الحوار ثايتا مهما كان المحتوى كبيرا ويتم التحريك باستخدام الـ ScrollPane

انا جربت وما مشي الحال

إذا نظــرتَ نيـوب اللـّيـثِ بـارزةً         فـلا تظــنَنَ أَنَّ اللـّيـــثَ يبْتسـِـــمُ


 


 


رسم المخططات البيانية بواسطة الجافا


 


كتاب تحليل وتصميم نظم المعلومات


#7

لا اعلم صراحه هل يمكن عملها مع الـ JoptionPane ولا لا

لكن اذا كنت تريد عمل ذلك فاصنع Dialog وافعل فيه ما تشاء

اعتقد ان ذلك هيكون سهل بالنسبه لك

Software Developer
Mahmoudkelany.com


 

#8

اخي العزيز ارجو ان تنظر لهذا الكود

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package MyApp;

import javax.swing.*;

/**
 *
 * @author PSYCHO_ MANTIS
 */
public class Main extends JFrame {
private JInternalFrame internal ;
private JScrollBar bar ;

    public Main() {
        internal = new JInternalFrame();
        bar = new JScrollBar();
        internal.setVisible(true);
        internal.add(bar);
        GroupLayout layout = new GroupLayout(internal.getContentPane());
        internal.getContentPane().setLayout(layout);
        internal.setSize(150, 150);

        internal.getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(bar, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                .addContainerGap(233, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addComponent(bar, GroupLayout.DEFAULT_SIZE, 196, Short.MAX_VALUE)
        );

        GroupLayout layout2 = new GroupLayout(getContentPane());
        getContentPane().setLayout(layout2);
        layout2.setHorizontalGroup(
            layout2.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGroup(GroupLayout.Alignment.TRAILING, layout2.createSequentialGroup()
                .addContainerGap(88, Short.MAX_VALUE)
                .addComponent(internal, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                .addGap(52, 52, 52))
        );
        layout2.setVerticalGroup(
            layout2.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGroup(layout2.createSequentialGroup()
                .addGap(23, 23, 23)
                .addComponent(internal)
                .addGap(70, 70, 70))
        );





    }
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
       Main app = new Main();
       app.setVisible(true);
       app.setSize(400,300);
       app.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    }

}

يمكن تشوف الصورة مرفوعة مع الرد ، لا ادري ان كان هذا قصدك باضافة JScrollBar الى JInternalFrame من دون اضافة JPanel

post-244925-016522000 1305293600_thumb.j

المرفقات
Untitled-1.jpg

تم تعديل هذه المشاركة بواسطة mental-driller في 13 مايو 2011 في 16:35

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#9

انت ذكرت الـ Frame وليس الـ InternalFrame

لكن الكود كدا تمام على الانترنال فريم

ايه المشكله ؟؟؟؟

Software Developer
Mahmoudkelany.com


 

#10
Mahmoud Kelany كتب:

انت ذكرت الـ Frame وليس الـ InternalFrame

لكن الكود كدا تمام على الانترنال فريم

ايه المشكله ؟؟؟؟

عفوا يا اخ محمود علشان بس ما يحصلش التباس ، مش انا اللي سألت الاخ اللي سأل في الاول كان بيقوال JInternalFrame بس بعد كده

لما بيدتوا تتكلموا على JFrame بديت اتخلبط ، فانا قدمت له الكود والصوره علشان بس تتضح الرؤيه واعرف له عاوز الJFrame ولا JInternalFrame

تم تعديل هذه المشاركة بواسطة mental-driller في 13 مايو 2011 في 17:00

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#11
اقتباس

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package MyApp;

import javax.swing.*;

/**
 *
 * @author PSYCHO_ MANTIS
 */
public class Main extends JFrame {
private JInternalFrame internal ;
private JScrollBar bar ;

    public Main() {
        internal = new JInternalFrame();
        bar = new JScrollBar();
        internal.setVisible(true);
        internal.add(bar);
        GroupLayout layout = new GroupLayout(internal.getContentPane());
        internal.getContentPane().setLayout(layout);
        internal.setSize(150, 150);

        internal.getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(bar, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                .addContainerGap(233, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addComponent(bar, GroupLayout.DEFAULT_SIZE, 196, Short.MAX_VALUE)
        );

        GroupLayout layout2 = new GroupLayout(getContentPane());
        getContentPane().setLayout(layout2);
        layout2.setHorizontalGroup(
            layout2.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGroup(GroupLayout.Alignment.TRAILING, layout2.createSequentialGroup()
                .addContainerGap(88, Short.MAX_VALUE)
                .addComponent(internal, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                .addGap(52, 52, 52))
        );
        layout2.setVerticalGroup(
            layout2.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGroup(layout2.createSequentialGroup()
                .addGap(23, 23, 23)
                .addComponent(internal)
                .addGap(70, 70, 70))
        );





    }
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
       Main app = new Main();
       app.setVisible(true);
       app.setSize(400,300);
       app.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    }

}

بارك الله فيك أخ mental-driller يبدو أن إجابة صحيحة فقط علي أن أجرب الكود وللعلم أنا أعمل على InternalFrame

و لكن أود أن أعرف كيف قمت بي إضافتها من نتبينز عشان تسهل علي شوي

وبارك الله فيك وشكرا

#12

هل تفصد يعني باستخدام الفورم ؟ Form

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#13
Mahmoud Kelany كتب:

لا اعلم صراحه هل يمكن عملها مع الـ JoptionPane ولا لا

لكن اذا كنت تريد عمل ذلك فاصنع Dialog وافعل فيه ما تشاء

اعتقد ان ذلك هيكون سهل بالنسبه لك

عفوا لم أفهم المقصد من كلامك

ما الذي تعنيه بالـ Dialog هل تعني صناديق الحوار JOptionPane.showMessageDialog ام تقصد شيء آخر

ان كنت تقصد ذلك فهذا كان سؤالي عنه وجربت ان أضيف jscrollbar ولم استطيع تحريك المحتوى

إذا نظــرتَ نيـوب اللـّيـثِ بـارزةً         فـلا تظــنَنَ أَنَّ اللـّيـــثَ يبْتسـِـــمُ


 


 


رسم المخططات البيانية بواسطة الجافا


 


كتاب تحليل وتصميم نظم المعلومات


#14

قمت بتجريبها في نتبينز ولكن يبدو أنها لاتعمل يعني فقط موجودة ولكن لا تقوم بشئ

#15
mohammeding كتب:

قمت بتجريبها في نتبينز ولكن يبدو أنها لاتعمل يعني فقط موجودة ولكن لا تقوم بشئ

بالتأكيد الكود الذي كتبته لك يقوم بعمل JFrame و JInternalFrame فقط ، الــ functionality انت الذي تضيفها اذا كان هذا

قصدك، اذا كنت تعني شيئ اخر الرجاء التوضيح. او على الاقل قل لي ماذا تريدها ان تعمل

مع اني استغرب لماذا قد تريد ان تقوم بكتابة الكود من الصفر الا اذا كان لغرض التدريب، فالمعروف انك ستقوم بعمل Desktop Application من

Netbeans في العادة.

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#16
اقتباس
التأكيد الكود الذي كتبته لك يقوم بعمل JFrame و JInternalFrame فقط ، الــ functionality انت الذي تضيفها اذا كان هذا

قصدك، اذا كنت تعني شيئ اخر الرجاء التوضيح. او على الاقل قل لي ماذا تريدها ان تعمل

مشكل هو لدي JInternalFrame محدودة size يعني 926*626

و أريد أن أضيف JScrollBar لل InternalFram بتاعي يعني عندما يقوم المستخدم بالرسم 2D تكون لديه مساحة كبيرة للرسم

وجدت حلول لل jpanel و لكن المشروع بني على InternalFram يعني صعب تبديل كود من جديد لأنه متعلق بأحداث الموس و الكيبورد

#17

في هذه الحالة انا اتفق مع كلام الاستاذ محمود في السابق لانك سوف تقوم بتحديث الرسم باستخدام paintComponent() ، اعتقد انه يجب عليك اما استخدام JPanel

او احتفظ بالمشروع القديم ، وانشأ مشروع Java Desktop Application وبعد ان ترسم على الفورم (لن يأخذ منك وقت كثير لانك باختصار راح ترسم مش تكتب كود)

ثم اضف الاكواد القديمة في الاماكن المناسبة (يعني copy & paste)

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#18

صراحة استفدت من هذا الموضوع

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