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

JPanel Sliding و لا اروع

بدأه alionline في 24 نوفمبر 2011 · 13 رد · 2,538 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

السلام عليكم

اليوم جايبلكم Jpanel تقوم بعرض الـJPanls التي بداخلها على شكل Slide

JPanel Sliding Class

// بسم الله الرحمن الرحيم //
// الحمد لله رب العالمين والصلاة والسلام على اشرف المرسلين //
//  ابا القاسم محمد وعلى ال بيته الطيبين الطاهرين//

package jpanelsliding;


import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JPanel;
import javax.swing.Timer;



public class JPanelSliding extends JPanel{


  public JPanelSliding() {
        setBorder(javax.swing.BorderFactory.createEtchedBorder());
        Dimension size = new Dimension(this.getWidth(), this.getHeight());         
    }

  public void NextSlidPanel(Component ShowPanel) {

        if (!ShowPanel.getName().equals(getCurrentComponentShow(this))) {

            Component currentComp=getCurrentComponent(this);
            Rectangle b=currentComp.getBounds();
            ShowPanel.setVisible(true);
            JPanelSlidingListener sl=new JPanelSlidingListener(10, currentComp,ShowPanel, true);
            Timer t=new Timer(40,sl);
            sl.timer=t;
            t.start();

        }

    }

  public void NextSlidPanel(int SpeedPanel,Component ShowPanel) {

        if (!ShowPanel.getName().equals(getCurrentComponentShow(this))) {

            Component currentComp=getCurrentComponent(this);
            Rectangle b=currentComp.getBounds();
            ShowPanel.setVisible(true);
            JPanelSlidingListener sl=new JPanelSlidingListener(SpeedPanel, currentComp,ShowPanel, true);
            Timer t=new Timer(40,sl);
            sl.timer=t;
            t.start();
        }

    }

   public void NextSlidPanel(int SpeedPanel,Component ShowPanel,boolean DirectionMove) {

        if (!ShowPanel.getName().equals(getCurrentComponentShow(this))) {

            Component currentComp=getCurrentComponent(this);
            Rectangle b=currentComp.getBounds();
            ShowPanel.setVisible(true);
            JPanelSlidingListener sl=new JPanelSlidingListener(SpeedPanel, currentComp,ShowPanel, DirectionMove);
            Timer t=new Timer(40,sl);
            sl.timer=t;
            t.start();
        }

    }  

   public void NextSlidPanel(int SpeedPanel,int TimeSpeed, Component ShowPanel,boolean DirectionMove) {

        if (!ShowPanel.getName().equals(getCurrentComponentShow(this))) {

            Component currentComp=getCurrentComponent(this);
            Rectangle b=currentComp.getBounds();
            ShowPanel.setVisible(true);
            JPanelSlidingListener sl=new JPanelSlidingListener(SpeedPanel, currentComp,ShowPanel, DirectionMove);
            Timer t=new Timer(TimeSpeed,sl);
            sl.timer=t;
            t.start();
        }

    }  

  public Component getCurrentComponent(Container parent) {
        Component comp = null;
        int n = parent.getComponentCount();
        for (int i = 0 ; i < n ; i++) {
             comp = parent.getComponent(i);
            if (comp.isVisible()) {
                return comp;
            }
        }
        return comp;
    }

  public String getCurrentComponentShow(Container parent) {
        String PanelName = null;
        Component comp = null;
        int n = parent.getComponentCount();
        for (int i = 0 ; i < n ; i++) {
             comp = parent.getComponent(i);
            if (comp.isVisible()) {
               PanelName=comp.getName();
                return PanelName;
            }
        }
        return PanelName;
    }

  public class JPanelSlidingListener implements ActionListener {


        Component HidePanel;
        Component ShowPanel;
        int steps;
        int step=0;
        Timer timer;
        boolean isNext;

        public  JPanelSlidingListener(int steps,Component HidePanel, Component ShowPanel, boolean isNext) {
            this.steps=steps;
            this.HidePanel=HidePanel;
            this.ShowPanel=ShowPanel;
            this.isNext=isNext;
        }

        public void actionPerformed(ActionEvent e) {

            Rectangle bounds=HidePanel.getBounds();
            int shift=bounds.width/steps;
            if (!isNext) {
                HidePanel.setLocation(bounds.x-shift, bounds.y);
                ShowPanel.setLocation(bounds.x-shift+bounds.width, bounds.y);

            }
            else {
                HidePanel.setLocation(bounds.x+shift, bounds.y);
                ShowPanel.setLocation(bounds.x+shift-bounds.width, bounds.y);

            }

            repaint();     
            step++;

            if (step==steps) {
                timer.stop();
                HidePanel.setVisible(false);

                          }

            }

    }



      public void refresh() {
        revalidate();
        repaint();
    } 
}

الشرح

3
#4
abdelrahman.awad كتب:

لكن فيه مشكله اول ما نفذت الكود

بيطلع error Null pointer Exception

في اي كود لو سمحت

#5

جزاكم الله كل خير

فعلا مكون جميل

ولكن عندى شويه ملاحظات على الكود ان اسم الداله تبداه بحرف كبير Next طبعا زى ما انت عارف انه من المستحب ان يكون حرف صغير next

وبالنسبه للكود فيه تكرار كتير فى الدوال الخاصه بالـ nextSlidePanel انا قومت بالتعديل عليها

وها هو التعديل

	public void nextSlidPanel(Component ShowPanel) {
		nextSlidPanel(10, 40, ShowPanel, true);
	}

	public void nextSlidPanel(int SpeedPanel, Component ShowPanel) {
		nextSlidPanel(SpeedPanel, 40, ShowPanel, true);
	}

	public void nextSlidPanel(int SpeedPanel, Component ShowPanel,
			boolean DirectionMove) {
		nextSlidPanel(SpeedPanel, 40, ShowPanel, DirectionMove);
	}

	public void nextSlidPanel(int SpeedPanel, int TimeSpeed,
			Component ShowPanel, boolean DirectionMove) {

		if (!ShowPanel.getName().equals(getCurrentComponentShow(this))) {
			Component currentComp = getCurrentComponent(this);
			ShowPanel.setVisible(true);
			JPanelSlidingListener sl = new JPanelSlidingListener(SpeedPanel,
					currentComp, ShowPanel, DirectionMove);
			Timer t = new Timer(TimeSpeed, sl);
			sl.timer = t;
			t.start();
		}
	}

وشكرا

2

Software Developer
Mahmoudkelany.com


 

#6

لاشكر على واجب اخ محمود

وشكرا على الملاحظة

بس انا ضفت هذة الدوال nextSlidPanel لتحكم بالسرعة والوقت لا اكثر

والصراحة لم استطيع اضافة

CardLayout برمجيا لهذه الــPanel

فاذا لديك طريقة لاضافة هذه الــLayout

تشاركنا الاجر والثواب

علما اني جربت

public JPanelSliding() {
        setlayout(new cardlayout());
        setBorder(javax.swing.BorderFactory.createEtchedBorder());
        Dimension size = new Dimension(this.getWidth(), this.getHeight());         
    }

وشكرا

#7

الفكره ان اقصد هى كثره الكود مع انه ممكن مناداه الداله الاكبر

والفكره الاخرى التى نوهت عليها هى بدايه اسم الداله تكون حرف صغير

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

علشان مش اعمل واحد للتجربه من الاول

للتعامل مع الـ CardLayout

Software Developer
Mahmoudkelany.com


 

#8

اوكي انا اتفهم قصدك اخ محمود

وشكرا مرة ثانية

وهذا المشروع

JSlidePanles2.rar

#9

لقد قومت بعده تعديلات

والحمدلله توصلت لشىء قيم من وجهه نظرى

تفضل اخى الكريم

TestJSlidePanels.zip

بالتوفيق جميعا :)

1

Software Developer
Mahmoudkelany.com


 

#10

مشاركة جميلة وفكرة جديدة

شكرا لك اخي

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


 


 


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


 


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


#11

مشكور اخ محمود

تعديل جميل

ولكن اتعلم انها كانت في السابق نفس هذه الفكرة

لكن قمت ببعض التعديلات لاستدعاء الــJPanel عن طريق اسمها

ولقد قمت ببعض التعديلات بحيث يمكن ان تحرك الــJpanels

باربع اتجاهات

تحياتي للجميع

وهذا المشروع باخر التعديلات

JSlidePanles2.rar

#12

إذا كان هناك من يهتم

بأمور التحريك

النسخة 0.8 من حزمتي AAnimation كانت تقوم بتحريك المكونات على الحاوية

النسخة 0.9 من حزمتي AAnimation تقوم بتحريك الرسومات على المكون

بإمكانك النظر على عارض الصور الذي قمت ببناؤه بالحزمة

تحياتي

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

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

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

728x90.png

#13

السلام عليكم

حاولت اعمل زي هيك لكن بطلع error

ياريت الي بيعرف يعملو يساعدني

شكرا مقدما

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

appliction.rar

تم تعديل هذه المشاركة بواسطة hazimzxc في 4 ديسمبر 2011 في 13:42

#14

مين عرف ايش ال error :blink:

تم تعديل هذه المشاركة بواسطة hazimzxc في 4 ديسمبر 2011 في 18:01

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