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

استفسار عن : اضافة رابط لفتح ملف موجود على الجهاز ؟

بدأه Ms.n في 13 يونيو 2010 · 16 رد · 1,029 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

مساء الخير ..

أناا أعمل على اتمام واجهة رسومية بواسطة برنامج 8.6 NetBeans لمشروع التخرج وقد أنجزت الكثير بفضل الله أولاً ثم بفضل جهود الأخوة والأخوات في المنتدى ..

حقيقة استفدت فائدة كبيرة من هذا القسم لا أملك الا أن أدعو للمشاركين والمشرفين بأن يسعدهم الله وينولهم ما يتمنون في الدنيا والآخرة ..

*

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

مثل الصورة أدناه ..

RId52095.jpg

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

JFrame f = new JFrame();

    f.getContentPane().setLayout(new GridLayout(0,2));

    URL url = new URL("http://www.google.com.sa/");

    JLinkButton linkButton = new JLinkButton("http://www.google.com.sa/", url );

    f.getContentPane().add(linkButton);

    f.setSize(400, 200);

    f.setVisible(true);

اذا وضعت مسار الملف C:\Documents and Settings\Administrator\Desktop\test

يظهر هذا الايرور

java.net.MalformedURLException: unknown protocol: c

لا أعلم هل الطريقة المستخدمة خاطئة ؟!

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

هل هناك وسيلة أخرى ؟؟

بارك الله في وقتكم و جهودكم ..

#2

مرحبا بك اخى فى المنتدى

Ms.n كتب:

لا أعلم هل الطريقة المستخدمة خاطئة ؟!

نعم اخى الطريقة المستخدمة خاطئة

لفتح ملف من الجهاز يجب ربطه بالبرنامج المشغل له على النظام

مثلا الملفات ذات الامتداد txt مرتبطة ببرنامج notepad اى انه عند الضغط على اى ملف txt موجود على جهازك مرتين يتم فتحه مباشرة داخل Notepad

ولاستخدام هذه الخاصية استخدم الفئة Desktop وهى ستقوم بكل ماتحتاجه

تعلمها من هنـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــا

وتمتع بامكانياتها القوية

بالتوفيق

تم تعديل هذه المشاركة بواسطة MOHAMED FATHEI في 13 يونيو 2010 في 21:42

1


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

الأنفال ۳۳                                  
 

#3

هل تريد فتحه في مشغل خارجي.. أم تعرض النتيجة داخل برنامج الجافا؟

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

بالتوفيق،،

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#4

شكراً لك على سرعة الرد ..

الطريقة جيدة لكن لا تتوافق مع المطلوب مني ..

هنا يتوجب أن أدخل اسم الملف ثم النقر على زر الفتح ..

المطلوب مني أن أضع مسار ملف text والضغط على هذا الرابط ليتم فتحه كما في الصورة

RId52095.jpg

هل هذه الطريقة مدعمة أو لابد من استخدام Desktop Class ؟؟

**

MOHAMED FATHEI , Wajdy Essam

جزاكم الله خيراً على جهودكم وبارك فيكم ..

تم تعديل هذه المشاركة بواسطة Ms.n في 13 يونيو 2010 في 23:41

#5

عفوا ، ما الشيء الذي ترغب في فتحة ، هل هو رابط لموقع في النت او ملف text , xml,.... موجود في جهازك ؟

#6

حاول مع file protocol:

file:///C:\Documents and Settings\Administrator\Desktop\test
#7
اقتباس
عفوا ، ما الشيء الذي ترغب في فتحة ، هل هو رابط لموقع في النت او ملف text , xml,.... موجود في جهازك ؟

المراد فتحه ملف نصي على الجهاز text file ..

C:\Documents and Settings\Administrator\Desktop\test\arab.txt

أضع مسار الملف للمستخدم بعد الضغط يفتح له ؟

أسعدك الله ووفقك في الدارين ..

#8
Khaled.Alshaya كتب:

حاول مع file protocol:

file:///C:\Documents and Settings\Administrator\Desktop\test

شكراً لك ..

جربت file protocol

ظهر المسار في الواجهة بشكل سليم لكن لا يستجيب ولا يظهر الملف بعد الضغط ..

أسعدك الله ووفقك في الدارين ..

#9

أسعدتني ردودكم ..

أعتذر هذه التجربة الأولى في GUI قد أجهل كثير من الاشياء و المصطلحات التي قدتعتبر لكم بديهية !!

: )

لكن لكل من أضاف رداً هنا

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

أختكم Ms.n

#10

تعمل فقط على windows

    public static void openFile(String path) throws IOException, InterruptedException {

        Process p =Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + path);
        p.waitFor();
       }

ادعيلي :lol:

اما هذه لل MAC

Process p = Runtime.getRuntime().exec("open /Documents/mypdf.pdf");

تم تعديل هذه المشاركة بواسطة Mohammed Mshari Ersan في 14 يونيو 2010 في 13:42

#11

done in last reply

تم تعديل هذه المشاركة بواسطة Mohammed Mshari Ersan في 14 يونيو 2010 في 13:42

#12
Ms.n كتب:

أسعدتني ردودكم ..

أعتذر هذه التجربة الأولى في GUI قد أجهل كثير من الاشياء و المصطلحات التي قدتعتبر لكم بديهية !!

: )

لكن لكل من أضاف رداً هنا

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

أختكم Ms.n

لماذا الاعتذار كنا مثلك ووجدنا من ساعدنا لذلك يجب علينا المساعدة

وشكرا لك على الدعاء

نعود للموضوع اذا كان الملف المطلوب فتحه ملف txt وتريدين فتحه داخل البرنامج

يمكنك استخدام JTextarea وقرائة محتويات النص باستخدام inputStreamReader وعرض المحتوى فى صندوق النص JTextarea

اما اذا كنتى تريدين فتحه فى البرنامج المرتبط به وليكن notepad مثلا فاستخدمى الفئة Desktop

وانا افضل الطريقة الثانية(مجرد رأي)

بالتوفيق


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

الأنفال ۳۳                                  
 

#13

قمت بعمل برنامج بسيط يوضح استخدام الفئة Desktop

الكود :

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Desktop;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.File;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

/**
 * 
 */

/**
 * @author all
 *
 */
public class Main extends JFrame {

	/**
	 * 
	 */
	private static final long serialVersionUID = 4648172894076113183L;

	private Desktop desktop;

	public Main(){
		try {
			createGui();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		SwingUtilities.invokeLater(new Runnable(){
			public void run(){
				new Main().setVisible(true);
			}
		});

	}

	private void createGui() throws Exception{
		JPanel panel=new JPanel();
		panel.setLayout(new BorderLayout());
		JLabel lbl=new JLabel("click here to open the file(read.txt).",JLabel.LEADING);
		lbl.setFont(new Font("Tahoma",Font.BOLD,14));
		lbl.setForeground(Color.RED);
		lbl.addMouseListener(new MouseAdapter(){
			public void mousePressed(MouseEvent e){
				lbl_mousePressed(e);
			}
		});
		panel.add(lbl,BorderLayout.CENTER);
		panel.setOpaque(true);
		this.setContentPane(panel);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setSize(new Dimension(400,300));
	}

	private void lbl_mousePressed(MouseEvent e){

    	try{

    		String fileName = "read.txt";
        	File file = new File(fileName);

        	if (Desktop.isDesktopSupported()) {
            	desktop = Desktop.getDesktop();
        	}

        	if(file.exists()){
        		desktop.open(file);
        	}

    	}catch(Exception ex){
    		ex.printStackTrace();
    	}

	}

}

يجب انشاء ملف باسم read.txt ووضعه فى نفس مجلد البرنامج

والبرنامج كاملا فى المرفقات

src.zip

تحياتى

2


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

الأنفال ۳۳                                  
 

#14

+1

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

معذره اخى محمد

البرنامج شغال تمام وانا شغلته كمان من ملف run.bat وليس من برنامج الجافا نفسه

المهم

كنت اريد الاستفسار عن هذا السطر ؟

private static final long serialVersionUID = 4648172894076113183L;

وبعد اذنك شرح الجزئيه الصغنونه دى

 if (Desktop.isDesktopSupported()) {
                desktop = Desktop.getDesktop();
            }

تم تعديل هذه المشاركة بواسطة Mahmoud Kelany في 14 يونيو 2010 في 15:04

Software Developer
Mahmoudkelany.com


 

#15
Mohammed Mshari Ersan كتب:

تعمل فقط على windows

    public static void openFile(String path) throws IOException, InterruptedException {

        Process p =Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + path);
        p.waitFor();
       }

ادعيلي :lol:

اما هذه لل MAC

Process p = Runtime.getRuntime().exec("open /Documents/mypdf.pdf");

شكراً شكراً لك ..

الحمدلله ضبطت لوحدها بأجربها مع الليسنر بعدما اخلص اختباري ..

ربي يغفرلك ولوالديك ويحققلك اللي تتمناه بالدنيا والآخرة ..

#16
MOHAMED FATHEI كتب:

قمت بعمل برنامج بسيط يوضح استخدام الفئة Desktop

الكود :

يجب انشاء ملف باسم read.txt ووضعه فى نفس مجلد البرنامج

والبرنامج كاملا فى المرفقات

src.zip

تحياتى

راائع جداً

المثال واضح وجاري تجربته الآن ..

ربي يغفر لك ولوالديك ويرزقك أكثر مما تمنى في الدنيا والآخرة ..

: )

الحمدلله المشكلة الرئيسية انحلت ..

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

:)

شكراً لكم جميعاً أسعدتموني بردودكم وتجاوبكم ..

تم تعديل هذه المشاركة بواسطة Ms.n في 14 يونيو 2010 في 15:40

#17
Mohammed Mshari Ersan كتب:

تعمل فقط على windows

    public static void openFile(String path) throws IOException, InterruptedException {

        Process p =Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + path);
        p.waitFor();
       }

ادعيلي :lol:

اما هذه لل MAC

Process p = Runtime.getRuntime().exec("open /Documents/mypdf.pdf");

السلام عليكم أعضاء ومشرفين المنتدى

لايسعني الأ أن اقف شاكرة لكم على ردودكم ومساعدتكم

للأخت Ms.n

فجزاكم الله خيرا واثابكم

وجعله الله في موازين حسناتكم

وفرج الله عنكم كربكم كما أفرجتم عني كربتي

لأن المشكلة التي واجهت الأخت Ms.n

كذلك واجهتني وبفضل الله ثم ردودكم

حللت المشكله لدي

ولكن تبقى لدي مشكله أخرى

ألا وهي

أني في مشروعي أسترجع أكثر من اسم ملف مخزن في database

وسوف أعرض رابط لكل ملف

وأستفساري هو ..

كيف أعرض رابط لكل ملف التي أسترجعتها من database

دمتم في حفظ الرحمن ورعايته

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