فیلم آمورشی – بخش هشتم ایجاد دفترچه تلفن در جاوا

https://www.aparat.com/v/cK2tO

ایجاد یک دفترچه تلفن در جاوا ، به صورت گام به گام

ایجاد یک دفترچه تلفن در جاوا ، به صورت گام به گام

در این پروژه از با استفاده از چند کامپوننت از کتابخانه Swing ، یک دفترچه تلفن در جاوا ایجاد میکنیم ، که از فایل برای نگهداری داده ها استفاده می کند و قابلت درج و حذف مخاطب را دارا می باشد.

کامپوننت های استفاده شده در این پروژه عبارت است از JTable ، JButton ، JLable و …

در این پروژه می آموزیم که چطور به صورت پیشرفته JTable را مدیریت کنیم و از فایل برای پر کردن اطلاعات داخل جدول استفاده کنیم. و هنگام حذف سطر از جدول، سطر متناظر از فایل حذف شود و هنگام اضافه کردن سطر به جدول، سطر جدید به فایل هم اضافه شود. و همچنین می آموزیم که چطور ظاهر گرافیکی برنامه را زیبا تر کنیم.

همچنین با دیدن این فیلم آموزشی، چندین تکنیک ریز و درشت دیگر را خواهید آموخت.

 

در صورت وجود هر گونه سوال در قسمت نظرات بیان فرمایید

دوستان لطفا اشکالات آموزش از جمله نحوه بیان تند حرف زدن ، کند حرف زدن ، زیاد یا کم توضیح دادن و یا هر مشکل دیگری که فکر می کنید اگر بر طرف شود به بالا رفتن کیفیت آموزشها کمک می کند را بیان بفرمایید تا در آموزش های بعدی لحاظ شود.

به علت مشکل آپارات با فیلم های با حجم بالا ، از این به بعد فیلم ها در سرور جدید قرار می گیرد که متاسفانه امکان تماشای آنلاین وجود ندارد و فقط می توانید فیلم ها را دانلود و سپس تماشا کنید.
مدت فیلم: ۱ ساعت و ۶ دقیقه

حجم: ۳۷ مگابایت

لینک فیلم آموزشی بخش هشتم جاوا در آپارات

 

لینک فیلم آموزشی بخش هشتم جاوا در یوتیوب

در یو تیوب کیفیت نمایش را در حداکثر انداره قرار دهید تا فیلم را با کیفیت خوبی ببینید

 

لینک های دانلود فیلم آموزشی دفترچه تلفن ار دراپ باکس

لینک دانلود سورس برنامه دفترچه تلفن از دراپ باکس

امید فرجی

سلام، امید فرجی هستم از همدان. از سال 1398 در حوزه برنامه نویسی فعالیت دارم و در این مدت پروژه های تجاری مختلفی انجام دادم. همچنین از سال 1391 سایت آموزش تخصصی جاوا را راه اندازی کردم و در خدمت شما هستم. امیدوارم مفید بوده باشم.

شما ممکن است این را هم بپسندید

۴۷ پاسخ‌ها

  1. جاواکار گفت:

    سلام علیکم مهندس جان
    خسته نباشی
    واقعا ممنونم
    منکه تا الآن تو فیلمهای آموزشی شما مشکل خاصی رو مشاهده نکردم، همشون بی عیب و نقص بودند،

    خدا قوت!

  2. قاسم گفت:

    سلام استاد
    امشب اولبن بارمه مطالبتونو میبینم
    امتحان تئوری جاوا افتاده بودم
    اصلا از برنامه نویسی زده شدم
    ولی قول میدم عملی ۲۰ بشم
    تازه میفهمم جاوا چیه
    خیلی خیلی ممنون انشاالله همیشه سربلندو پیروز باشی

  3. مهدی گفت:

    سلام با تشکر از ویدئو ها برام جالب بودش شما ۱ ساعت فیلم گرفتین و حجمش شده ۳۷ مگابایت.میشه بگید با چه نرم افزاری فیلم رو ظبط کردید؟

  4. مهدی گفت:

    فیلمهایی که ظبط میشن قابلیت کمپرس (فشرده شدن) دارن؟
    من با snagit فیلم میگیرم میشه مثلا ۷۰۰ مگ فشرده میکنم میشه ۱۰ مگ

    • میزان فشرده سازی رو قبل از ضبط تعیین میکنم. شما نرم افزار رو نصب کنی و ببینی همه چیز دستت میاد. محیط ساده ای داره.
      موفق باشی

  5. عادل گفت:

    مررررسی استاد
    من تازه با این سایت آشنا شدم
    وااااااقعا لذت بردم
    موفق باشید

  6. جاواکار گفت:

    سلام
    خسته نباشید

    یه سئوالی برام پیش اومد که هنوز جوابشو نتونستم پیدا کنم
    چون توضیح داشت، به آدرس ایمیل شما فرستادم
    لطف بفرمایین یه نگاهی بندازین

    با تشکر…

    • خواهش میکنم.
      پاسختون داده شد.
      لطفا تا جای ممکن سوالاتتونو اینجا بپرسید.
      هر چقدر هم که توضیح داشت لطف کنید همینجا توضیح بدید.
      اینجوری دیگران هم از سوالات شما استفاده میکنن.
      با تشکر

  7. جاواکار گفت:

    در مورد اون متد removeFromFile آخه اون متد اول فایل رو میخونه و تا اون سطر مورد نظر عینا تمام سطر ها رو به فایل دیگه ای کپی میکنه.
    من اگه این کار رو بکنم، هیچ تاثیری روش نداره، چون وقتی مثلا از حالت “نه” به “بله” تغییر پیدا میکنه، تو فایل هیچ تاثیری نمیذاره! و فقط در جدول دیده میشه!

    میشه یکم بیشتر توضیح بدین؟

    • شما درست میگی. ولی من نگفتم عینا همون کار رو بکنی.
      توی اون متد، من اومدم فایل رو خوندم و توی یه String نگه داشتم. بعدش چیزایی رو که خوندم ، توی همون فایل نوشتم. شما باید مرحله خوندن از فایل رو حذف کنی و فقط اطلاعات داخل جدول رو مستقیما توی فایل بنویسی.
      امیدوارم متوجه منظورم شده باشی.
      اگه بازم سوالی هست، بفرمایید

  8. جاواکار گفت:

    فکر کنم کم کم دارم متوجه میشم:
    منظورتون اینجوریه؟:

    
        public boolean RemoveBookFromFile(int index){
            
            File Mf=new File("AllBookRecords.txt");
            File Tf=new File("Boutput.txt");
            try{
                PrintWriter Bpw=new PrintWriter(new FileWriter(Tf));
                String line=null;
                Bpw.print(line);
                Bpw.close();
                Mf.delete();
                Tf.renameTo(Mf);
                return true;
            } catch(FileNotFoundException e1){
                return false;
            }
            catch(IOException ioe){
                  return false;
            }
        }
    
    • نه منظورم دقیقا این بود.

      
          private void updateFile(ArrayList tableData) {
              PrintWriter Bpw = null;
              try {
                  Bpw = new PrintWriter(new FileWriter("AllBookRecords.txt"));
                  for (BookInformation book : tableData) {
                      String bookInfo = book.getBookName() + "&" + book.getBookDate() + "&"
                              + book.getBookID() + "&" + book.getBorrowStatus();
                      Bpw.println(bookInfo);
                  }
              } catch (Exception e) {
                  System.out.println("Error");
              }finally{
                  if(Bpw!=null){
                      Bpw.close();
                  }
              }
          }
      

      tableData اطلاعات داخل جدول هست.
      با این متد هر چیزی که داخل جدول میبینید در فایل نوشته میشه.
      البته ممکنه بسته به کد شما این متد نیاز به تغییر داشته باشه.

    • جاواکار گفت:

      دستتون درد نکنه زحمت کشیدین.
      فقط هنگام فراخوانی باید چی به آرگومانش بدم؟

      باید از نوع arraylist باشه

    • جاواکار گفت:

      من اینجوری فراخوانیش باید بکنم:

      
          public void  borrowInitialize(int row){
              if(uAllBooks.getValueAt(row, 3).equals("yes")) {
                  JOptionPane.showMessageDialog(null, "This Book Was Borrowed");
              }
              else{
                  uAllBooks.setValueAt("Yes", row, 3);
                  uAllBooks.fireTableRowsUpdated(row, row);
                  uAllBooks.updateFiles("d");
              }
          }
      
      
      
      
    • باید اون ArrayListی که اطلاعات JTable داخلش هست رو بهش بدی.
      توی کد شما میشه متغییر bData در کلاس user_AllBooks2
      البته میتونی متد updateFile رو اینطوری بنویسی تا نیاز به هیچ آرگومانی نباشه:

      
      private void updateFile(){
              PrintWriter Bpw = null;
              try {
                  Bpw = new PrintWriter(new FileWriter("AllBookRecords.txt"));
                  for (BookInformation book : bData){
                      String bookInfo = book.getBookName() + "&" + book.getBookDate() + "&"
                              + book.getBookID() + "&" + book.getBorrowStatus();
                      Bpw.println(bookInfo);
                  }
              } catch (Exception e) {
                  System.out.println("Error");
              }finally{
                  if(Bpw!=null){
                      Bpw.close();
                  }
              }
          }
      
      
    • جاواکار گفت:

      آقا کارت خیلی درسته، درست شد.
      راستی، یه سئوال:
      شما چند مدت هست که جاوا کار میکنید که تا این اندازه مسلط هستید؟

    • خواهش میکنم. موفق باشی.

      زمان زیادی نیست که جاوا کار میکنم. هنوز مبتدیم 😉

    • جاواکار گفت:

      بازم تشکر میکنم
      خیلی کمکم کردین،

      آجرک الله…

    • موفق و سربلند باشی

  9. جاواکار گفت:

    راستی، این قابلیت کد نوشتن رو هم به این قسمت اضافه بفرمایین که اینقدر کد ها برعکس نیوفتن.

    • برای نشون دادن کدها به صورتی که در IDE دیده میشن، باید از کد زیر استفاده کنید.
      به جای your code کد هاتونو کپی کنید.
      به زودی BBCode هم به سایت اضافه میشه.

      <div style=”direction: ltr;”>
      <pre>

      your code

      </pre>
      </div>

  10. جاواکار گفت:

    راستی، فکر کنم بدونید، من امتحان کردم، این کدهای منو تو یه صفحه نوت پد کپی کنین، کد ها درست میوفتن.

  11. جاواکار گفت:

    سلام علیکم
    خسته نباشید،
    مدتیه مطلب جدیدی نمیذارید؟

    یه سئوال کوچیک داشتم:
    تو فیلم آموزشی، قسمت اضافه کردن سطر اینو نوشتید:

    if(contact != null) {
    tableModel.addRow(contact)
    }
    

    من امتحان کردم، دیدم مثلا اگه فقط یه فیلد از چند فیلد addbookDialog رو پر بکنی هم سطر اضافه میشه و بقیه رو null قرار میده.
    واسه اول من اون شرط رو اینجوری تغییرش دادم:

    
    if(contact.getName()!=null && contact.getMobile()!=null && contact.getHome()!=null)
    {
    //Add Row
    }
    
    
    

    به نظرتون برای این کار این روش خوبی هست؟
    ممنونم

    • سلام دوست عزیز.
      نه این روش خوبی نیست. بهتره توی همون کلاس addbookDialog در رویداد دکمه add ، چک کنید که تا وقتی که کاربر فیلدها رو مطابق با شرایط شما پر نکرده ، اجازه ساختن Contact و بسته شدن پنجره داده نشه. یعنی کاربر یا باید cancel کنه یا باید همه ی فیلد هایی رو که شما خواستی پر کنه و بعد add رو بزنه.
      به زودی مطالب جدیدی روی سایت قرار میدم.
      سربلند باشی

  12. سحر گفت:

    سلام ممنون از سایتتون ولی من یه مشکل بزرگ درم .یه پروژه دارم که خیلی نیاز به کمک دارم ولی کسی کمکم نمیکنه
    پروزه ام سازه های ماکارونیه تفریبا نوشتمش ولی چندتا مشکل اساسی دارم یکی کار با فایل ،رندم در فایل ایجاد شده،و تایمر معکوس
    اگر امکانش هست من در رابطه با حل مشکلاتم با ایمیلتون در ارتباط باشم که سوالامو بپرسم ازتون در ضمن من تا هفته دیگه باید پروژه رو تکمیل کنم
    در صورت تمایل به ایمیلم پیام بدین
    از لطفتون ممنونم

    • سلام. خواهش میکنم.
      شما سوالاتتونو اینجا بپرسید. اگر در توانم باشه جوابگو هستتم.
      البته اگر سوالاتتونو در انجمن زیر بپرسید بهتره:

      موفق باشید

  13. سحر گفت:

    راستش من یه پروژه دارم که نیاز دارم به تایمر معکوس

    کاربر با زدن دکمه استارت تایمر رو صفحه فرم شروع به تغییر کنه مثلا از سه دقیقه برسه به صفر

    کدشو تو قسمت باتن استارت اینجوری نوشتم ولی نمیدونم چرا فقط مقدار آخرو نشون میده؟

    کد :

    int min=3;

    int sec=0;

    jlabel.settext(integer.tostring(min)+……?(sec));

    while(min>=1){

    min–;

    sec=59;

    jlabel.settext(integer.tostring(min)+……?(sec));

    while(sec==0){

    sec–;

    }

    }

    • برای ساخت تایمر باید کار با Thread ها رو بلد باشید. شما اول در مورد Thread مطالعه بفرمایید و شروع به نوشتن برنامه بکنید، بعدش هر مشکلی داشتید اینجا بپرسید تا راهنماییتون کنم.

  14. جاواکار گفت:

    سلام
    خسته نباشید
    غرض از مزاحمت، میخواستم یه دکمه ای به برنامم اضافه کنم که وقتی که سطری از جدول انتخاب میشه و روی دکمه ویرایش کلیک میکنیم، به نحوی بتونیم اطلاعات اون سطر انتخاب شده رو ویرایش کنم.
    مثلا اینجوری بشه که صفحه مربوط به اضافه کردن عضو جدید باز بشه و اطلاعات قبلی توی هر خونه باشه و ما بتونیم بعد از ویرایش دوباره ذخیره کنیم.
    یا هر راه ساده دیگه ای!

    ولی نمیدونم باید چیکار کنم.
    فقط متد setValueAt رو توی مدل جدولم پیاده سازی کردم و الآن موندم.

    • سلام.
      بله، به نظر من هم همون پنجره اضافه کردن عضو و پر کردن فیلد ها برای ویرایش عضو خوبه.
      اگر اطلاعات هر سطر یا همون عضو، در قالب یک Object نگهداری بشه،شما باید متدی در TableModel داشته باشی، که کارش برگردوندن Object سطر انتخاب شده باشه. فرض کنیم اسم این متد getSelectetMember باشه.
      با این اوصاف ، با زدن دکمه ویرایش، باید با استفاده از متدgetSelectetMember عضو جدید رو از توی جدول در بیاری ، و به کلاس اضافه کردن عضو بدی تا اطلاعات این عضو رو در فیلد ها قرار بده و بقیه تنظیمات رو هم با توجه به اینکه عضوی به کلاس اضافه کردن عضو داده شده یا نه باید تغییر کنه. منظورم از بقیه تنظیمات نوشته ی روی دکمه هست (اضافه کردن یا ویرایش کردن )و … هست.

  15. سحر گفت:

    از سایت خوبتون ممنونم
    مشکل بعدی که باهاش روبرو شدم کار با فایله من یه سری اطلاعات از کار بر اول میگیرم بعد دکمه سیو رو که میزنم این اطلاعات ذخیره میشه ولی برای کار بر دوم همین اتفاق میوفته در حالی که من میخوام اطلاعات قبلی فایلم بمونه و اطلاعات جدید به انتهای فایل ذخیره شم خیلی مطلب درباره فایلهل خوندم ولی نشد میشه بایه مثال کمکم کنید ممنون

    • خواهش میکنم.
      من در فیلم آموزشی دفترچه تلفن ،کار با فایل ، طوری که اطلاعات در انتهای فایل ریخته بشه رو آموزش دادم. فیلم رو ببیند ، مشکلتون بر طرف میشه.

  16. سحر گفت:

    سلام ممنونم از راهنمایتون …
    مشکل فایلم با دیدن فیلم حل شدولی
    من میخوام تو فایلی که دارم و نام گروه هامو ریختم یک رندم بزنم جای گروه ها رو عوض کنم میشه بگین از چه دستوری در فایل استفاده کنم؟

  17. سحر گفت:

    سلام ببنید من الان اطلاعات هر گروه رو داخل هر خط از فایل ذخیره کردم حالا میخوام ترتیب این گرو ها رو بهم بریزم یعنی مثلا گروه اول بره جای گروه پنجم وگروه پنجم بره جای گروه دوم…
    نظر خودم رو رندم بود …
    امیدوارم توضیحاتم کامل باشه//

  18. سحر گفت:

    من اومدم هر خط از فایل رو خوندم و در یه آرایه یک بعدی ریختم حالا میخوام تو این آرایه جای خونه هارو عوض کنم که این یعنی عوض کردن گروه ها و بعد از این جابجای همشونو با ترتیب بهم خورده بریزم تو فایل
    کارم درسته؟

    • بله. دقیقا باید همین کار رو بکنی.
      هر سطر رو در قالب یه Object بخون و در یه آرایه بریز. بعدش تریتیب آرایه رو به هر شکلی که میخوای به هم بریز و بعد بعد تک تک Objetc های داخل آرایه ی به هم ریخته رو داخل فایل بنویس.

  19. امید گفت:

    واقعا خخسته نباشید. خدا خیرتون بده

  20. Rasool گفت:

    سلام
    من از کردستان عراق چطوری میتونم سورس هاتون رو خریداری کنم.
    با تشکر…

  21. MISTY گفت:

    سلام ودرود:
    راستش من برا پروزم نیازبه قطعه کداتون دارم:چجوری میتونم دریافت کنم؟

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *