# فناوری جاوا > برنامه‌نویسی جاوا > سوال: سوالات من ( در طول انجام پروژه )

## M0TR!X

سلام.

یه پروژه کوچیک دیگه افتاده میخوام شروع کنم به نوشتن ! یه سری سوالات پیش میاد در طول پروژه بخاطر همین یه تاپیک زدم هر موقع سوالی پیش امد دیگه واسه هر سوال یه تاپیک باز نکنم !

اولین سوالی که پیش امده اینه :

1_چطوری میتونم روی JFrame  یه عکس بزارم ؟ از هاردم ؟ میخوام یه بک گراند بزارم واسش؟

اگه بخوایم تو یه قسمت JFrame  عکس بزاریم چی؟

----------


## yegane8

سلام

اگه می‌خوای تو یه فرم عکس بذاری و با ابزار گرافیکی کار میکنی‌ یک JLabel درست کن و  از properties اون JLabel گزینه icon رو بزن و عکس رو انتخاب کن

----------


## M0TR!X

سلام.

من میخوام وقتی روی یک رادیو باتن کلیک شد JFiled  و  JLable مخفی بشه ! از خاصییت setvisible  هم استفاده کردم مخفی نمیشه ! مشکل چیه ؟


میشه چند تا جی فیلد و جی لیبل رو توی یه گروپ قرار داد و بعد به خاصیت گروپ رو عوض کرد ؟ مثلا setvisible  گروپ رو ture  کرد و همه جی فیلد ها hidden  بشن ؟

----------


## yegane8

من یه جا همچین چیزی دیده بودم که یک کلاس پلی درست می کرد که از کلاس mouseAdapter به ارث می برد و تو اوون کلاس یه متدی که اسمش یادم نیست رو override می کرد و با متد getComponent   کامپوننت مورد نطر رو می ریخت تو یه متغییر از نوع component و setVisible اوون کامپوننت رو false می کرد
بعد تو کلاسی که JLabel , ...  رو داشت اون کلاس پلی رو new می کرد و اوون کامپوننتی رو که می خواست مخفی کنه بهش متد addMouseListenr رو اضافه می کرد اوون object رو هم به متد addMouseListenr  پاس می داد اینطوری label.addMouseListener(pam);

----------


## M0TR!X

سلام.

بخدا اگه یه کلمه فهمیدم چی گفتی !!!!!!

من الان مشکلم اینه که چرا کدی که میزنم اجرا نمیشه ؟ یعنی jFiled الان باید visible  بشه که نمیشه !!!!

----------


## yegane8

در این صورت همون خاصیت setVisible رو false کنی JLabel ,... مخفی میشن(در Action event رادیو باتن مورد نظر) من امتحان کردم شد

----------


## M0TR!X

سلام.

یه روش خیلی خیلی ساده پیدا کردم ! گفتم شاید یه روز به درد شما هم بخوره ! اول یه JPanel  میزارید رو فریمتون بعد هر چی که میخواین با هم visible بشن رو میزارید تو JPanel  بعد خاصیت SetVisivle شو false یا ture کنید !!!!!! خیلی خوب جواب میده !

----------


## M0TR!X

سلام.

من میخوام وقتی JFrame  لود شد توی یکی از Textfiled  ها تاریخ سیستم ثبت بشه ! چطوری میتونم این کارو بکنم ؟

----------


## yegane8

شاید این به دردت بخوره !
import java.applet.*;
import java.awt.*;
import java.util.*;

public class clock extends Applet implements Runnable{
  Thread t,t1;
  public void start(){
  t = new Thread(this);
  t.start();
  }
  
  public void run(){
  t1 = Thread.currentThread();
  while(t1 == t){
  repaint();
  try{
  t1.sleep(1000);  
  }catch(InterruptedException e){}
  }
  }

  public void paint(Graphics g){
  Calendar cal = new GregorianCalendar();
  String hour = String.valueOf(cal.get(Calendar.HOUR));
  String minute = String.valueOf(cal.get(Calendar.MINUTE));
  String second = String.valueOf(cal.get(Calendar.SECOND));
  g.drawString(hour + ":" + minute + ":" + second, 20, 30);
  }
}

----------


## M0TR!X

سلام.

ساعت و تاریخ گرافیکی نمیخوام !

من فقط میخوام تاریخ سیستم رو بخونم و بریزم توی یکی از JFiled  هام !!!!

----------


## M0TR!X

سلام.

کدی که خودم استفاده میکنم اینه :


        int Dt;
        String date;
        Date myDate =new Date();
        Dt=myDate.getDate();
       date=Integer.toString(Dt);
        txtdate.setText(date);

اما خروجی فقط عدد 10 هست !!

----------


## yegane8

خروجی 10  چون امرود 10th و تو این برنامه فقط داری روز رو می گیری و ماه و سال رو نمی گیری 
نمی دونم اگه کلاس Year , Month رو هم داشته باشیم می تونی با همین شیوه تازریخ رو چاپ کنی 
اما به نظر من بهتره که از کلاس calendar استفاده کنی تا فقط یه بار از این کلاس object بگیری 
من اینو نوشتم خودت اگه خواستی تو JLabel نمایش بده 
public class tarikh {
    
    
    public tarikh(){
        setTarikh();
    }

    private void setTarikh() {
  Calendar cal = new GregorianCalendar();
  String year = String.valueOf(cal.get(Calendar.YEAR));
  String month = String.valueOf(cal.get(Calendar.MONTH));
  String date = String.valueOf(cal.get(Calendar.DATE));
  System.out.printf("\n %s  /  %s  /  %s ",year,month,date);
  
 
    }
       public static void main(String args[]){
        tarikh t = new tarikh();
}
}

----------


## M0TR!X

سلام.

خب date میشه تاریخ دیگه من getdate  زدم باید تاریخ امروز رو خروجی بده نه فقط روز رو ! getday  روز رو نشون میده.؟ اشتباه میکنم ؟

----------


## yegane8

اگه با netbeans می نویسی خودش برای هر field یه توضیح داره منظور از  date روز اوون ماه هست 
تو خود ide هم نوشته که فیلد date  با همون فیلد date_of_month فرقی نداره
احتمالا این توضیحی که در مورد این فیلد دادم رو میشه تعمیم داد به متد ها مثل همون getdate

----------


## M0TR!X

سلام.

من دو تا buuton  دارم یکیش برای برای دخیره فایل(انتخاب مسیر برای ذخیره) و یکیش هم واسه انتخاب فایل.

حالا چطوری میتونم اینکارو بکنم ؟ یکی از دکمه ها باید مسیر رو خروجی بده اون یکی هم باید فایل رو انتخاب کنه (open)

----------


## yegane8

سلام 
چه برای انتخاب مسیر فایل برای ذخیره چه برای انتخاب یه مسیر برای باز کردن یک فایل می تونی از JfileChooser استفاده کنی 
http://docs.oracle.com/javase/tutori...lechooser.html

----------


## M0TR!X

سلام.

من توی برنامم یه بخش به عنوام بک اپ گیری و و بازگرداندن بک اپ دارم !(import و export) .

دستوری که باید استفاده کنم چیه ؟ mysqldump  ؟؟

من این دستور رو میزنم جواب نمیده :

String sql="mysql -u root -p root business <backup.sql";

----------


## M0TR!X

سلام.

یعنی هیچ کس برنامه ای ننوشته که قابلیت بک اپ داشته باشه ؟

----------


## spiderman200700

سلام
اولا برای اینکه داخل فایل یریزس باید دستور رو اینجوری بنویسی:
mysqldump -u root -p root business > backup.sql
دوما باید این دستور در خط فرمان ویندوز یا shell لینوکس اجرا بشه.
سوما باید خط فرمان رو به پوشه ی mysql/bin منتقل کنی، بعدش کد رو اجرا کنی.

حالا اگه بازم مشکلی هست بگو. امیدوارم بتونیم کمکت کنیم.

----------


## M0TR!X

سلام.

1ـچطوری میتونم به cmd  ویندوز دسترسی داشته باشم ؟تا از انجا دستور رو اجرا کنم ؟

2ـتوی فولدر mysql فولدر به نام bin  وجود نداره.

3ـمن تو خود خط فرمان mysql  این دستور رو زدم خروجی نداشت.دستور درسته ؟

----------


## amin1softco

ببین این به کارت میاد :

public boolean backupDB(String dbName, String dbUserName, String dbPassword, String path) {

        String executeCmd = "mysqldump -u " + dbUserName + " -p" + dbPassword + " --add-drop-database -B " + dbName + " -r " + path;
        Process runtimeProcess;
        try {

            runtimeProcess = Runtime.getRuntime().exec(executeCmd);
            int processComplete = runtimeProcess.waitFor();

            if (processComplete == 0) {
                System.out.println("Backup created successfully");
                return true;
            } else {
                System.out.println("Could not create the backup");
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }

        return false;
    }


+

----------


## M0TR!X

سلام.

1ـچطوری میتونم مسیری که کاربر انتخاب میکنه رو بریزم تو متغیر path  ؟ خروجی Jfilechooser  فقط عدد‌! نه مسیر.


2ـخط 7 و 8 رو یه توضیح میدین ؟

3ـاز این متد استفاده میکنم ولی ارور میده :

java.io.IOException: Cannot run program "mysqldump": CreateProcess error=2, The system cannot find the file specified

----------


## M0TR!X

سلام.

من یه Frame  دارم که کار سرچ رو انجام میده ! وصل میشه به دیتابیس و چند مورد رو باید مقایسه کنه بعد خروجی بده ! 

مثلا نام.نام خانوادگی.تاریخ و ..... ورودی  رو با مقادیر ثبت شده در دیتابیس مقایسه میکنه و خروجی میده.

SELECT * FROM TABLE WHERE name like input_name

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

----------


## spiderman200700

SELECT * FROM TABLE WHERE name like input_name and family like input_family and date like input_date and ....

----------


## maktoom

سلام
فیلم آموزشی جاوای آقای مهرداد کیانیان فیلم جالبیه. پروژه ا رو شروع و انجام میده.
در قسمتی که مربوط به پایگاه داده میشه کار با Jframe و Jtable رو هم توضیح داده. 
کلا یه بار دیدنش توصیه میشه.

----------


## M0TR!X

سلام.

من یه کلاس دارم یه متغییر از نوع رشته میگیره (query)  بعد وصل میشه به دیتابیس و query  رو که گرفته رو اجرا میکنه ! حالا من از سازنده یه JFrame ای که میخوام نتیجه query  توی اون نشون داده بشه از کلاس ابجکت سازی کردم و query  رو دادم بهش ولی وقتی کلاس نتیجه نهایی رو return  میکنه استثنای nullpointer  میده !

مشکل چیه ؟

----------


## maktoom

اگه امکان داره کد رو یا شبه کد رو بذارید. آخه این دو خط که نوشتید در همه جا همینه.

----------


## M0TR!X

سلام.

این کد button سرچ :

public static String query = null;
        if (ch_forosh.isSelected()) {
        query = "select * from foroshe_melk where lastname_malek like '%s' or tarikh_sabt like '%s' or address like '%s' or ghimat like '%s' or type like '%s' ";
        query = String.format(query, txtlastname.getText(), txtdate1.getText(), txtaddress.getText(), txtprise.getText(), type);
        frm_result fr_result = new frm_result();
        fr_result.setVisible(rootPaneCheckingEnabled);
         }

وقتی از frm_result  نمونه سازی میشه :

public frm_result() {
                try {
            ResultSet Rs=DB_Model.Exequte_Query(frm_serach.query);
            Rs.last();
            int row = Rs.getRow();
            if (row > 0) {
                String[][] data = new String[row][9];
                data[0][0] = Rs.getString("name_malek");
                data[0][1] = Rs.getString("lastname_malek");
                data[0][2] = Rs.getString("tarikh_forosh");
                data[0][3] = Rs.getString("ghimat");
                data[0][4] = Rs.getString("address");
                data[0][5] = Rs.getString("type");
                data[0][6] = Rs.getString("moshakhasat");
                data[0][7] = Rs.getString("kharidar");
                data[0][8] = Rs.getString("tozihat");
                String[] columns = {"توضیحات", "خریدار", "مشخصات", "نوع ملک", "آدرس", "قیمت", "تاریخ فروش", "نام خانوادگی", "نام"};
                JTable tbl_data = new JTable(data, columns);
                jScrollPane1.setViewportView(tbl_data);
            }
        } catch (SQLException ex) {
            Logger.getLogger(frm_result.class.getName()).log(L  evel.SEVERE, null, ex);
        }
        initComponents();
    }

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

    public static ResultSet Exequte_Query(String query) {
        try {
            ResultSet Rs = null;
            Connection cnn = null;
                cnn = DriverManager.getConnection(url, "root", "root");
                Statement St = cnn.createStatement();
                Rs = St.executeQuery(query);
                return Rs;
        } catch (SQLException ex) {
            Logger.getLogger(DB_Model.class.getName()).log(Lev  el.SEVERE, null, ex);
            return  null;
        }

}}

----------


## spiderman200700

فکر میکنم باید این قسمتو اینجو بنویسی. امتحان کن ببین جواب میده یا نه.

public frm_result() {
                try {
            ResultSet Rs=DB_Model.Exequte_Query(frm_serach.query);
            if (Rs.next()) {
                String[][] data = new String[1][9];
                data[0][0] = Rs.getString("name_malek");
                data[0][1] = Rs.getString("lastname_malek");
                data[0][2] = Rs.getString("tarikh_forosh");
                data[0][3] = Rs.getString("ghimat");
                data[0][4] = Rs.getString("address");
                data[0][5] = Rs.getString("type");
                data[0][6] = Rs.getString("moshakhasat");
                data[0][7] = Rs.getString("kharidar");
                data[0][8] = Rs.getString("tozihat");
                String[] columns = {"توضیحات", "خریدار", "مشخصات", "نوع ملک", "آدرس", "قیمت", "تاریخ فروش", "نام خانوادگی", "نام"};
                JTable tbl_data = new JTable(data, columns);
                jScrollPane1.setViewportView(tbl_data);
            }
        } catch (SQLException ex) {
            Logger.getLogger(frm_result.class.getName()).log(L  evel.SEVERE, null, ex);
        }
        initComponents();
    }

----------


## M0TR!X

سلام.

حل نشد.

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at frm_result.<init>(frm_result.java:38)
    at frm_serach.jButton1ActionPerformed(frm_serach.java  :252)

وقتی رو frm_result.java:38 کلیک میکنم میره تو سورس و این کد رو نشون میده :

jScrollPane1.setViewportView(tbl_data);


وقتی هم رو frm_serach.java:252 کلیک میکنم :

frm_result fr_result = new frm_result();

----------


## maktoom

پیشنهاد می کنم برنامتون رو در ساده ترین حالت(یک سطر) امتحان کنید برای فیلدی که از نوعش اطمینان دارید. همینطور برنامتون رو سبک و سبکتر کنید تا متوجه بشید اشکال دقیقا کجا بوجود میاد.

----------


## M0TR!X

سلام.

یه فروم انگلیسی معرفی کنید شاید انجا نتیجه بگیریبم.


الان دو سه روزه سایت واسه من باز نمیشه سرور مشکل داشته ؟

----------


## spiderman200700

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

----------


## M0TR!X

سلام.

با یک فیلد هم امتحان میکنم نتیجه همونه !

فقط وقتی میخوام نتیجه رو نشون بدم (چه با تیبل چه با JTextfiled) ارور میده ! یعنی اگه خطی که داده رو میده به تیبل تا نتیجه رو نشون بده رو حذف کنم برنامه بدون مشکل اجرا میشه فقط خروجی نداره

این خط رو حذف میکنم برنامه بدون مشکل اجرا میشه :

jScrollPane1.setViewportView(tbl_data);

----------


## spiderman200700

این شکلی بنویسش درست میشه احتمالا:
 jScrollPane1.add(tbl_data);

----------


## M0TR!X

سلام.
من پروژه رو میزارم دوستان یه نگا بندازن ممنون میشم !

پسورد در پیغام خصوصی

----------


## spiderman200700

دوست عزیز یه توضیحم بده که مشکلت دقیقا توی چه کلاسی و کدوم قسمته.

----------


## M0TR!X

سلام.

شما JFrame  سرچ رو اول ران کن  بعد از خودت یه اطلاعاتی بده به JFrame بعد دکمه سرچ رو بزن بعد از JFrame Result  نمونه سازی میشه و کدهای سازنده اش اجرا میشه که ارور هم همینجاست !

البته داخل JFrame Result هم از کلاس DB_Model   استفاده شده.

خواستی بگو فیلم بگیرم.دیتابیس هم خودت بساز تیبل درست کن زیاد مهم نیست

----------


## M0TR!X

سلام.

دوستان مشکل حل شد !

الان مشکل اینه که وقتی خروجی رو میخوام توی JTable  نشون بدم فقط یه سطر نشون میده ! یعنی اگه خروجی چند سطر باشه فقط یه سطر نشون میده ! بقیه سطر ها رو سفید رنگ میکنه و چیزی نشون نمیده !

----------


## fbcomputer

> سلام.
> 
> 1ـچطوری میتونم مسیری که کاربر انتخاب میکنه رو بریزم تو متغیر path  ؟ خروجی Jfilechooser  فقط عدد‌! نه مسیر.
> 
> 
> 2ـخط 7 و 8 رو یه توضیح میدین ؟
> 
> 3ـاز این متد استفاده میکنم ولی ارور میده :
> 
> java.io.IOException: Cannot run program "mysqldump": CreateProcess error=2, The system cannot find the file specified


سلام ،شما مشکلتون حل شد؟؟ منم از همین جا این دستوراتو استفاده کردم و  دقیقا همین جوابو گرفتم، اگه جواب گرفتین میشه منو راهنمایی کنید؟؟

----------


## M0TR!X

ارور میگه mysqldump اجرا نشد. بخاطر اینکه وقتی در حالت عادی هم تویcmd دستور mysqldump رو تایپ کنی اجرا نمیشه.

راه حل:اول باید بری تو مسیر نصب دیتابیس و داخل فولدر mysqldump بعد بقیه ماجرا ...

----------

