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

GUI with AVLTree

بدأه DoDes في 25 مايو 2010 · 37 رد · 2,859 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

يا جماعة الخير انا عندي مشروع وهو عبارة عن برمجة AVL tree ...اكملت الكود ولله الحمد ولكن واجهتني مشكلة GUI

الان انا ما عندي اي خبرة عنه لذلك حبيت تساعدوني ...يعني ابغى الـuser يعمل add او delete عن طريق GUI

ويكون فيه صورة ثابتة توضح للمستخدم مفهوم ال add و delete في هذه الشجرة

بالمختصر مشروعي هدفه تعليمي للمستخدم ولكن صلب هذا المشروع اللي هو GUI ماعندي اي فكرة عنه ياريت احد يساعدني

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

#2

اخى الكريم هذة واجهة بسيطة

انظر بداخلها ستجدنى محددة لك اين تكتب الكود اثناء عملية الحذف و الاضافة

و انا موجودة نعمل البرنامج مع بعض

بس ياريت ما تغبش فى الرد

Tree.rar

1 −1
00020309t.gif

1958_1963.gif
#3

اضغط هنـــــــــــــــــــــــــــــــــــــــا

تحياتى


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#4

اخى محمد هو عمل الكود

لكن يدمجة مع واجهة تقريبا هى دى المشكلة

00020309t.gif

1958_1963.gif
#5

اين هو الكود لا أراه ؟

حتى وان كتبه وليست لديه اى فكرة عن GUI كما قال هو

اتقصدين انك ستساعدينه فى هذا المشروع وتعطيه دورة كاملة فى GUI

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

يا اخت اسراء من يريد مساعدة احد

يدله على الطريقة التى يتعلم بها

وهذا طبعا فى صالحه فما اسهل ان نكتب الشفرة ونسمع كلمة شكر او مجاملة

ولكن ماذا بعد ذلك ؟


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#6
اقتباس
تى وان كتبه وليست لديه اى فكرة عن GUI كما قال هو

اتقصدين انك ستساعدينه فى هذا المشروع وتعطيه دورة كاملة فى GUI

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

يا اخت اسراء من يريد مساعدة احد

يدله على الطريقة التى يتعلم بها

وهذا طبعا فى صالحه فما اسهل ان نكتب الشفرة ونسمع كلمة شكر او مجاملة

ولكن ماذا بعد ذلك ؟

اسأت فهمى

على العموم

اعتذر

للعلم عمرى ما كتبت مساعدة من اجل سماع كلمة شكراا دى نهائى

00020309t.gif

1958_1963.gif
#7
اقتباس
اقتباس

يا اخت اسراء من يريد مساعدة احد

يدله على الطريقة التى يتعلم بها

وهذا طبعا فى صالحه فما اسهل ان نكتب الشفرة ونسمع كلمة شكر او مجاملة

ولكن ماذا بعد ذلك ؟

اسأت فهمى

على العموم

اعتذر

للعلم عمرى ما كتبت مساعدة من اجل سماع كلمة شكراا دى نهائى

إلعبو مع بعض :blush:

#8

هههههههههههههههههههههه

لا تجعلوني أحولكم على حكيم المنتدى :wink:

تحياتي

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

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

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

728x90.png

#9
اسراء شلبى كتب:

للعلم عمرى ما كتبت مساعدة من اجل سماع كلمة شكراا دى نهائى

لا اقصدك بهذا الكلام اطلاقا اخت اسراء

{هويدي} كتب:

إلعبو مع بعض :blush:

:lol::lol:

علاء الصالحي كتب:

هههههههههههههههههههههه

لا تجعلوني أحولكم على حكيم المنتدى :wink:

تحياتي

ولا تنسى الاخ علاء نفسه يعلقنا على باب المنتدى

شكلنا ايه بعد كده فى سوق Google ؟

وكمان يحولنا الى القضاء العالى و يحبسنا فى المنتدى سنتين على الأقل

انا هأروح منتدى ال Notepad أرحم :)

سلام

تم تعديل هذه المشاركة بواسطة MOHAMED FATHEI في 26 مايو 2010 في 07:39


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#10

انا اسف يا جماعة ...تأخرت في ردي لكم لأني دواامي اليوم طويل جدا

اعتذر مرة أخرى ...والان سيتم الاطلاع على ما كتبتوه لي

ان شاء الله استفيد

#11

الكود الاول لـ class AVL node + AVLTree

وبعده الـ main

سؤالي الان : اين اضع كود GUI هل في main ام في class الاخر؟؟

package scratchpad;

import java.io.*;
import java.util.*;

class AVLNode<T extends Comparable> {
  T data;
  int balance;
  ArrayList<AVLNode<T>> link;

  AVLNode ( T data ) {
    this.data = data;
    balance = 2;
    link = new ArrayList<AVLNode<T>> ( 2 );
    link.add ( null ); link.add ( null );
  }
}

class AVLTree {
  private static boolean new_depth;

  private static<T extends Comparable>
  AVLNode<T> single_rotate ( AVLNode<T> tree, int dir ) {
    int not_dir = dir == 0 ? 1 : 0;
    AVLNode<T> save = tree.link.get ( dir );

    tree.link.set ( dir, save.link.get ( not_dir ) );
    save.link.set ( not_dir, tree );

    return save;
  }

  private static<T extends Comparable>
  AVLNode<T> double_rotate ( AVLNode<T> tree, int dir ) {
    int not_dir = dir == 0 ? 1 : 0;
    AVLNode<T> save = tree.link.get ( dir ).link.get ( not_dir );

    tree.link.get ( dir ).link.set ( not_dir, save.link.get ( dir ) );
    save.link.set ( dir, tree.link.get ( dir ) );
    tree.link.set ( dir, save );

    save = tree.link.get ( dir );
    tree.link.set ( dir, save.link.get ( not_dir ) );
    save.link.set ( not_dir, tree );

    return save;
  }

  private static<T extends Comparable>
  void fix_balance_factors ( AVLNode<T> tree, int dir ) {
    int not_dir = dir == 0 ? 1 : 0;

    if ( tree.link.get ( dir ).link.get ( not_dir ).balance == dir ) {
      tree.balance = 2;
      tree.link.get ( dir ).balance = not_dir;
    }
    else if ( tree.link.get ( dir ).link.get ( not_dir ).balance == not_dir ) {
      tree.balance = dir;
      tree.link.get ( dir ).balance = 2;
    }
    else {
      tree.balance = tree.link.get ( dir ).balance = 2;
    }

    tree.link.get ( dir ).link.get ( not_dir ).balance = 2;
  }

  private static<T extends Comparable>
  AVLNode<T> rebalance_insert ( AVLNode<T> tree, int dir ) {
    int not_dir = dir == 0 ? 1 : 0;

    if ( tree.balance == dir ) {
      if ( tree.link.get ( dir ).balance == dir ) {
        tree.link.get ( dir ).balance = 2;
        tree.balance = 2;

        tree = single_rotate ( tree, dir );
      }
      else {
        fix_balance_factors ( tree, dir );

        tree = double_rotate ( tree, dir );
      }

      new_depth = false;
    }
    else if ( tree.balance == not_dir ) {
      tree.balance = 2;
      new_depth = false;
    }
    else {
      tree.balance = dir;
    }

    return tree;
  }

  private static<T extends Comparable>
  AVLNode<T> rebalance_remove ( AVLNode<T> tree, int dir ) {
    int not_dir = dir == 0 ? 1 : 0;

    if ( tree.balance == dir ) {
      tree.balance = 2;
    }
    else if ( tree.balance == not_dir ) {
      if ( tree.link.get ( not_dir ).balance == not_dir ) {
        tree.link.get ( not_dir ).balance = 2;
        tree.balance = 2;

        tree = single_rotate ( tree, not_dir );
      }
      else if ( tree.link.get ( not_dir ).balance == 2 ) {
        tree.link.get ( not_dir ).balance = dir;

        tree = single_rotate ( tree, not_dir );
      }
      else {
        fix_balance_factors ( tree, not_dir );

        tree = double_rotate ( tree, not_dir );
      }

      new_depth = false;
    }
    else {
      tree.balance = not_dir;
      new_depth = false;
    }

    return tree;
  }

  private static<T extends Comparable>
  AVLNode<T> insert_r ( AVLNode<T> tree, T data ) {
    if ( tree == null ) {
      tree = new AVLNode<T> ( data );
      new_depth = true;
    }
    else {
      int dir = data.compareTo ( tree.data ) > 0 ? 1 : 0;

      tree.link.set ( dir, insert ( tree.link.get ( dir ), data ) );

      if ( new_depth ) {
        tree = rebalance_insert ( tree, dir );
      }
    }

    return tree;
  }

  private static<T extends Comparable>
  AVLNode<T> remove_r ( AVLNode<T> tree, T data ) {
    if ( tree == null ) {
      new_depth = false;
    }
    else if ( data.compareTo ( tree.data ) == 0 ) {
      if ( tree.link.get ( 0 ) != null && tree.link.get ( 1 ) != null ) {
        AVLNode<T> heir = tree.link.get ( 0 );

        while ( heir.link.get ( 1 ) != null ) {
          heir = heir.link.get ( 1 );
        }

        tree.data = heir.data;

        tree.link.set ( 0, remove_r ( tree.link.get ( 0 ), tree.data ) );

        if ( new_depth ) {
          tree = rebalance_remove ( tree, 0 );
        }
      }
      else {
        AVLNode<T> save = tree;

        tree = tree.link.get ( tree.link.get ( 0 ) == null ? 1 : 0 );

        new_depth = true;
      }
    }
    else {
      int dir = data.compareTo ( tree.data ) > 0 ? 1 : 0;

      tree.link.set ( dir, remove_r ( tree.link.get ( dir ), data ) );

      if ( new_depth ) {
        tree = rebalance_remove ( tree, dir );
      }
    }

    return tree;
  }

  public static<T extends Comparable>
  AVLNode<T> insert ( AVLNode<T> tree, T data ) {
    new_depth = false;
    return insert_r ( tree, data );
  }

  public static<T extends Comparable>
  AVLNode<T> remove ( AVLNode<T> tree, T data ) {
    new_depth = false;
    return remove_r ( tree, data );
  }

  public static<T extends Comparable>
  void structure ( AVLNode<T> tree, int level ) {
    int i;

    if ( tree == null ) {
      for ( i = 0; i < level; i++ ) {
        System.out.print ( "\t" );
      }
      System.out.println();

      return;
    }

    structure ( tree.link.get ( 1 ), level + 1 );

    for ( i = 0; i < level; i++ ) {
      System.out.print ( "\t" );
    }
    System.out.println ( tree.data + "(" + tree.balance + ")" );

    structure ( tree.link.get ( 0 ), level + 1 );
  }
}

و هذا main بعد اضافتي لأول واجهتي الرسومية ...بس الشاشة السوداء بتطلع

اريد اللي ينعرض في الشاشة السوداء يكون معروض بـ GUI

package scratchpad;

import java.io.*;
import java.util.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.KeyEvent;


public class MyMain extends JDialog {


    public MyMain() {

        setTitle("Tip of the Day");

        JPanel basic = new JPanel();
        basic.setLayout(new BoxLayout(basic, BoxLayout.Y_AXIS));
        add(basic);

        JPanel topPanel = new JPanel(new BorderLayout(0, 0));
        topPanel.setMaximumSize(new Dimension(450, 0));
        JLabel hint = new JLabel("JDeveloper Productivity Hints");
        hint.setBorder(BorderFactory.createEmptyBorder(0, 25, 0, 0));
        topPanel.add(hint);

        ImageIcon icon = new ImageIcon("jdev.png");
        JLabel label = new JLabel(icon);
        label.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
        topPanel.add(label, BorderLayout.EAST);

        JSeparator separator = new JSeparator();
        separator.setForeground(Color.gray);

        topPanel.add(separator, BorderLayout.SOUTH);

        basic.add(topPanel);

        JPanel textPanel = new JPanel(new BorderLayout());
        textPanel.setBorder(BorderFactory.createEmptyBorder(15, 25, 15, 25));
        JTextPane pane = new JTextPane();

        pane.setContentType("text/html");
        String text = "<p><b>Closing windows using the mouse wheel</b></p>" +
            "<p>Clicking with the mouse wheel on an editor tab closes the window. " +
            "This program helps to understand AVL tree creation, insertion and deletion.</p>";
        pane.setText(text);
        pane.setEditable(false);
        textPanel.add(pane);

        basic.add(textPanel);

        JPanel boxPanel = new JPanel(new FlowLayout(FlowLayout.LEFT, 20, 0));

        JCheckBox box = new JCheckBox("Show Tips at startup");
        box.setMnemonic(KeyEvent.VK_S);

        boxPanel.add(box);
        basic.add(boxPanel);

        JPanel bottom = new JPanel(new FlowLayout(FlowLayout.RIGHT));

        //JButton ntip = new JButton("Next Tip");
        //ntip.setMnemonic(KeyEvent.VK_N);
        //JButton close = new JButton("Close");
        //close.setMnemonic(KeyEvent.VK_C);

//        bottom.add(ntip);
  //      bottom.add(close);
        basic.add(bottom);

        bottom.setMaximumSize(new Dimension(450, 0));

        setSize(new Dimension(450, 350));
        setResizable(false);
        setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
        setLocationRelativeTo(null);
        setVisible(true);
    }

 public static void main ( String[] args ) throws IOException {
  	MyMain tip=new MyMain();
    AVLNode<Integer> tree = null;

    for ( int i = 0; i < 10; i++ ) {
      tree = AVLTree.insert ( tree, i );

      AVLTree.structure ( tree, 0 );
      System.out.println ( "\n------------------------" );

      System.in.read();
    }

    for ( int i = 0; i < 10; i++ ) {
      tree = AVLTree.remove ( tree, i );

      AVLTree.structure ( tree, 0 );
      System.out.println ( "\n------------------------" );

      System.in.read();
    }
  }

}

تم تعديل هذه المشاركة بواسطة DoDes في 27 مايو 2010 في 17:56

1
#12

معليش كثرت طلباتي ولكن اريد ادمج كل حاجة في نافذة واحدة

يعني الاضافة والحذف في زر واحد "شوفوا runحقي كيف يشتغل عشان تفهموا قصدي" و صورة تعليمية عن الrotation

الصورة عملتها في كود لحالها وزبطت

والكود حقها اخذته من الموقع اللي دليتوني عليه مشكورين

import javax.swing.*;


import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;


public class hoho extends JPanel {

    public void paintComponent(Graphics g) {
        super.paintComponent(g); 

        Graphics2D g2d = (Graphics2D) g;
        Image image = new ImageIcon("Tree_Rebalancing1.jpg").getImage();
        g2d.drawImage(image, 10, 10, null);
    }

    public static void main(String[] args) {

        hoho image = new hoho();
        JFrame frame = new JFrame("Steps in how to balance tree- kinds of rotation");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(image);
        frame.setSize(690, 525);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
}

,وهذه الصورة اللي نتجت لي من code

http://img718.imageshack.us/img718/3418/68819445.jpg

تم تعديل هذه المشاركة بواسطة DoDes في 27 مايو 2010 في 17:59

#13

اخي المشرف علاء الصالحي لقد تم تعديل مشاركاتي لذا يرجى ازالة التنبيه

1
#14

ياجماعة ارجوكم ساعدوني ...انا شفت مصادر GUI وفهمتها بس المشكلة كيف ادمجها مع الـ code حقي

#15
اقتباس
اين هو الكود لا أراه ؟

حتى وان كتبه وليست لديه اى فكرة عن GUI كما قال هو

اتقصدين انك ستساعدينه فى هذا المشروع وتعطيه دورة كاملة فى GUI

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

يا اخت اسراء من يريد مساعدة احد

يدله على الطريقة التى يتعلم بها

وهذا طبعا فى صالحه فما اسهل ان نكتب الشفرة ونسمع كلمة شكر او مجاملة

ولكن ماذا بعد ذلك ؟

1 −1
00020309t.gif

1958_1963.gif
#16

ماذا تقصدي يا اخت اسراء من اقتباسك ؟؟؟

#17

الرجاء من المشرفين مسح الـ code الخاص بي

لأنه لايمكنني تعديل المشاركة

يرجى مسحها وذلك لعدم توفر نقاش تعليمي عليه

−1
#18

شكله الاعضاء اللي طلبوا الكود لا يريدوا المساعدة!!!

ارجو من المشرفين مسح الكود الخاص بي للمرة الاخيرة

−1
#19

منتدى مش متعاون على الاطلاق حتى المشرفين انفسهم قلت لهم يمسحوا الكود تبعي بس مش عارف وينهم؟؟؟

اانا لا احلل لاي احد يستخدم كودي

اانا لا احلل لاي احد يستخدم كودي

−3
#20

ليس من حقك أن تطلب مسح الكود الخاص بك

معنى ذلك أنك تعطينا الكود حتى تستفيد أنت فقط

وهذه ليست سياستنا في المنتدى

إن أعجبتك هذه السياسة فهذا شيء جيد

إن لم تعجبك فلا تعترض

تحياتي

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

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

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

728x90.png

#21

اخي علاء اي استفادة تتحدث عنها ؟؟؟

صحيح اشكر الاخت على اعطائي المرجع ولكنهم طلبوا الكود اكتر من مرة

وعطيتهم الكود ولكن لم يجبني احد !!!

لو حطيت نفسك مكاني رح تنقهر من دي الحركة صح وللا انا غلطان

وعالعموم شكرا على كل شي

1
#22

قد لا تكون استفدت هذه المرة

ألم تأخذ في اعتبارك أنهم ربما حاولوا ولم يستطيعوا المساعدة

بالمناسبة أحب أن أخبرك أن شيفرتك لا تعني لهم الكثير

لأنهم على الأغلب مازالوا يدرسون

وما طلبهم للشيفرة إلا ليقدروا على مساعدتك

على كل الأحوال أنت أحرقت سفنك بنفسك في رأيي

ولو كنت صبرت لربما قمت بمساعدتك

تحياتي

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

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

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

728x90.png

#23

شوف اخ علاء :شي عادي انه الواحد يعترض ويعبر عن رأيه بكل صراحة بس الغريب في الامر انه السمعة تبع العضو تنقص بس لأنه قال اللي في باله

يعني بالله اش تستنى مني مثلا مش عارف

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

عالعموم اتمنى من المشرفين يكونوا شوية flexble ويتقبلوا اي انتقاد بكل رحابة صدر مش -5

شكرا عالمساعدة مسبقا اللي كنت مستنيها ليه كم اسبوع

وعموما انا مش بشحد من حد مساعدة اللي عايز يساعد ربي فووق وحجازيه واللي مش عايز براحته

تحيتي لك وللأخت اسراء شلبي

وبحب اقول لها جزاك الله خير عالمصدر

1
#24

اخى علاء بالله عليك

نشوف الاخ عايز ايه الاول

اخى الكريم انت تقول لا احلل الكود لمن يأخذة

لا اله الا الله

تعرف ان فيه اعضاء يقوموا بعمل مشاريع ممتازة و يرفعونها على المنتدى للافادة و لا يطلبون من اى شهص على الاطلاق اى كلمة شكر سوى دعوة بظهر الغيب

انا كنت هساعدك و لو تقرا مشاركتى كنت محتاجة انك تبقى على المنتدى متوافر علشان لا انتظر كثيرا

و لكن احد الاعضاء كتب رد مش ظريف و ضايقنى تراجعت اصلا عن هذا الموضوع

و اخذت الكلام اقتباس حتى تفهم لوحدك ما اعنية

هل يا رتى لو كنت ساعدتك كنت هاخد منك حاجة؟؟ كنت هطلب منك اى مقابل

و لا كنت ادعى عليك و اقول انا لا احلل له مساعدتى

و الله المنتدى جميل و الاعضاء اجمل و احلى حظك بجد طلع وحش زى البطيخة مش عارفين حمرا و لا قرعة هههههههههههههه

انت زعلان على السالب اللى فى سمعتك

عايزة اقولك انه مش معايير

انا عن نفسى ربنا بيرزقنى بناس يبحثوا عن مشاركتى القديمة و يعطونى فيها سالب مع انى ببقى بساعد مش بقول كلام خارج و لا حاجة

انا هعطيك كل الموجبالمتوفر لدى اليوم

و نبدأ صفحة جديدة مع المنتدى

و العيب ليس على المشرف طبعا

اترك الكود صدفة اخى الكريم

مع انى مش محتاجاه و الله و لا اعتقد انى هحتاجة

ربنا معاك

00020309t.gif

1958_1963.gif
#25

اختي الكريمة بصراحة انا متعود على مواقع بتكون فيها الاكواد كنز واذا مافيش نقاش عليها فمالها داعي

لأنه مففيش حد حيستفيد من كود هو مش كاتبه لانه ما حيفهمه ولا عمره الاكاتب الكود شرحه بنفسه

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

عالعموم شكرا جزيلا لك واسف اذا غلطت على حد او زعلت حد او كان اسلوبي غليظ

والله يسامح الجميع

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