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

كيف يمكن عرض اللغة العربية في JEditorPane

مغلق
بدأه msaqer في 10 يناير 2005 · 18 رد · 1,808 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

قمت بعمل مستعرض browser بالجافا لأستعراض صفحات الإنترنت ، المستعرض الذي برمجمته يقوم بعرض الصفحات الإنجليزية بدون أي مشاكل. و لكن أواجه مشاكل عندما أكتب عنوان لبعض المواقع العربية مثل الجزيرة يظهر الموقع بأحرف غير مفهومة مثل ("ظ…ط­ظ…ظˆط¯ ط¹ط¨ط§ط³") عما بأنني إستخدمت الكلاس Local لإظهار اللغة العربية .

و الغريب و الذي لم أجد له تفسير هو بعض الأحيان حينما أكتب عنوان الموقع العربي لأول مرة تظهر الأحرف بطريقه غير مفهومة و لكن بعد النقر علي روابط داخل نفس الموقع تظهر الأحرف العربية بطريقه مقبولة ( ليست كما تظهر في Internet Explorer ) ، علما بأنني أستخدم بويندوز باللغة الإنجليزية و لكن يدعم اللغه العربية أي أستطيع أن أقرأ و أكتب العربية و الدليل أنني أكتب النص الحالي بالعربية

مركبة السوينق (Swing Component ) التي تظهر النص هي JEditorPane و لقد وضعتها لكل تقرا نص علي هيئة ال Text/HTML .

أرجو المساعدة و جزاكم الله خيراً.

ملاحظة: بحثت مسبقاُ في المنتدي و لم أجد شيئا ذو أهمية يمكن أن يساعد في حل المشكلة.

#2

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

import java.applet.*;
import java.awt.*;

public class Arabic extends Applet {

public void init() 
{
    setBackground(new Color(225,225, 255));
}

public void paint(Graphics g)
{
    g.setFont(new Font("Serif", Font.BOLD, 25));
    g.drawString("\u06ae\u06de\u06fa", 10 , 25);
}
} // END OF Class Arabic

from Here

لست متواجد بشكل يومي

#3

السلام عليكم

شكرٍاً أخي مجدي علي إقتراحك و جزاك الله خيراً

و لكن الحل المقترح لأسف لا يمكن تطبيقه لأن البرنامج الذي أقوم ببرمجته يقوم بعرض صفحات الإنترنت و لذلك لا يمكن وضع الرمز الرديف لكل حرف في الصفحة ببساطة لان بعض الصفحات تتغير كل مدة زمنية و أيضاً لان طبيعة البرنامج تعطي المستخدم حرية إدخال أي عنوان لأنترنت و بالتالي هذا الحل غير ممكن.

مازلت أنتظر المزيد من الأفكار و الحلول وجراكم الله الخير

السلام عليكم

#4

اظن ان حل مشكلتك هو عند استقبال الحرف العربي من المخدم و ليس السبب من JEditorPane

ممكن تضع لنا الجزء المتعلق باستقبال البيانات و الترويسة من المخدم

و ان شاء الله اقدر اساعدك

Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Programmers combine theory and practice: Nothing works and they don't know why

#5
اقتباس
اظن ان حل مشكلتك هو عند استقبال الحرف العربي من المخدم و ليس السبب من JEditorPane

اللي عم يقولو رامي مظبوط بس ضع الجزء المتعلق بالاستقبال و رح نشوف شو الحل

الحياة كلها وقفة عز فقط

------------------------------------------

المجتمع معرفة و المعرفة قوة

#6

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

بعد زمان متى رح تخلص فحص.. و ترجع لنا بكامل قواك

Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Programmers combine theory and practice: Nothing works and they don't know why

#7
اقتباس
بعد زمان متى رح تخلص فحص.. و ترجع لنا بكامل قواك

أنا خلصت القسم الأول من الفحص و موبايلك ما عم ترد عليه زعــــــــــــــــلان شي

الحياة كلها وقفة عز فقط

------------------------------------------

المجتمع معرفة و المعرفة قوة

#8

يرجى عدم مناقشة الامور الشخصية في المنتدى العام بل برسالة خاصة

هاني انا راسلت لك رسالتين خاصتين و لم ترد ؟؟؟

لا موبايلي ما فيه شئ بس كل العالم عم يقولو لي انه عم يتصلو و عم يفصل او عم يظل يرن يمكن لانني فعلت الام اس اس عند سيرياتيل

و غعلا الموبايل يظهر لي تحت كمية التغطية حرف G اختصار لـ GPRS

و حاطط عليها اشارة منع /

و انا مو زعلان ولا شئ اتصل فيني على البيت الخط الارضي احسن

Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Programmers combine theory and practice: Nothing works and they don't know why

#9

السلام عليكم

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

//	import the required packages

	import java.awt.*;
	import java.awt.event.ActionEvent;
	import java.awt.event.ActionListener;
	import java.io.IOException;
import java.util.Locale;

import javax.swing.JComponent;
	import javax.swing.JEditorPane;
	import javax.swing.JFrame;
	import javax.swing.JLabel;
	import javax.swing.JPanel;
	import javax.swing.JScrollPane;
	import javax.swing.JTextField;
	import javax.swing.JToolBar;

	import javax.swing.border.TitledBorder;
	import javax.swing.text.Document;
	import javax.swing.text.html.HTMLDocument;
	import javax.swing.text.html.HTMLEditorKit;

//	import org.w3c.dom.html.HTMLDocument;

	public class browser extends JFrame implements ActionListener {
  

  // define the editor pane which it will render the HTML code
  private JEditorPane editorPane;
  
  //define the url field 
  private JTextField urlFiled; 
  
  //define the urlPanel that contin the urlField and address lable
  private JPanel urlPanel;
  
  //define the status bar
  private JLabel statusBar;
  
  //create Scroll pane (JScrollpane) for the JEdtiorPane
  private JScrollPane scrollpane;
  
  
  private JToolBar toolBar;
  //Create the buttons
  
  public browser(String url2){
 	 
 	 // set the title for the browser window and set the size for it
 	 setTitle(" JAVA™ Browser");
 	 setSize(800,600);
      JComponent.setDefaultLocale(new Locale("ar"));
 	 
 	 urlPanel = new JPanel(new BorderLayout( ));
 	 urlFiled = new JTextField(url2);
         urlPanel.add(new JLabel("Address: "), BorderLayout.WEST);
         urlPanel.add(urlFiled, BorderLayout.CENTER);
         urlPanel.setBorder( new TitledBorder(""));
 	 
 	 //get the graphical user interface components display area
 	 Container cp = getContentPane();
 	 
 	 JPanel UrlandToolBarPanel = new JPanel(new BorderLayout());
 	 UrlandToolBarPanel.add(toolBar = new JToolBar("Tool Bar"),BorderLayout.NORTH);
 	 UrlandToolBarPanel.add(urlPanel, BorderLayout.SOUTH);
 	 
 	 /**
    *adding the html editor pane,
    *adding the status bar
    *adding the tool bar & and url panel
    *adding the scroll pane to the container
    */
 	 cp.add(editorPane = new JEditorPane());
 	 cp.add(scrollpane = new JScrollPane(editorPane));
 	 cp.add(UrlandToolBarPanel, BorderLayout.NORTH);
 	 cp.add(statusBar = new JLabel(" "), BorderLayout.SOUTH);
 	 
 	 /**
    * intialize the editoPane to render HTML
    */
 	 HTMLEditorKit kit = new HTMLEditorKit();
 	 editorPane.setEditable(false);
 	 HTMLDocument doc = (HTMLDocument) (kit.createDefaultDocument());
 	 HTMLDocument htmlDoc = new HTMLDocument();
 	 editorPane.setEditorKit(kit);
 	 editorPane.setDocument( doc);
 	 editorPane.setDocument(htmlDoc);
 	 /**
    * display the intial (optional) url entered by the user from the command line
    */
 	 try {
    editorPane.setPage(url2);
    statusBar.setText(url2);
 	 } catch (IOException e1) {
    
    e1.printStackTrace();
 	 }
 	 
 	 /**
    * register a lisnter to urlField so when the user enter new
    * url an event fired to set and display the editorPane to
    *  the new web address
    */
  
 	 urlFiled.addActionListener(new ActionListener( ) {
         public void actionPerformed(ActionEvent ae) {
           try {
            editorPane.setPage(ae.getActionCommand( ));
            statusBar.setText(ae.getActionCommand( ));
           }
           catch(Exception e) {
             statusBar.setText("Error: " + e.getMessage( ));
           }
         }
       });
 	 
 	 /**
    * register hyperlink listerner to follow the liks in the page
    * and show the link in the status bar
    */
    editorPane.addHyperlinkListener(new SimpleLinkListener(editorPane, urlFiled, statusBar));
    
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    show();
  }// end of the constructor
  //Main Method
  public static void main(String[] args){
 	 
 	 //define the url variable that holds the url address
 	 String url = null;
 	 if (args.length == 1) 
         url = args[0];
 	 else
    url ="http://www.aljazeera.net";
         
 	 new browser(url);
 	 
  }//end of the main method

  
  public void actionPerformed(ActionEvent arg0) {
 	 
 	 
  }

}

و هي الكلاس الثاني:

import java.io.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.html.*;

public class SimpleLinkListener implements HyperlinkListener {

private JEditorPane pane;       // The pane we're using to display HTML

private JTextField  urlField;   // An optional text field for showing the current
                               // URL being displayed

private JLabel statusBar;       // An optional label for showing where a link would
                              // take you

public SimpleLinkListener(JEditorPane jep, JTextField jtf, JLabel jl) {
 pane = jep;
 urlField = jtf;
 statusBar = jl;
}

public SimpleLinkListener(JEditorPane jep) {
 this(jep, null, null);
}

public void hyperlinkUpdate(HyperlinkEvent he) {
 HyperlinkEvent.EventType type = he.getEventType( );
 if (type == HyperlinkEvent.EventType.ENTERED) {
   // Enter event. Fill in the status bar.
   if (statusBar != null) {
     statusBar.setText(he.getURL( ).toString( ));
   }
 }
 else if (type == HyperlinkEvent.EventType.EXITED) {
   // Exit event. Clear the status bar.
   if (statusBar != null) {
     statusBar.setText(" "); // Must be a space or it disappears
   }
 }
 else if (type == HyperlinkEvent.EventType.ACTIVATED) {
   // Jump event. Get the URL and, if it's not null, switch to that page in the
   // main editor pane and update the "site url" label.
   if (he instanceof HTMLFrameHyperlinkEvent) {
     // Ahh, frame event; handle this separately.
     HTMLFrameHyperlinkEvent  evt = (HTMLFrameHyperlinkEvent)he;
     HTMLDocument doc = (HTMLDocument)pane.getDocument( );
     doc.processHTMLFrameHyperlinkEvent(evt);
   } else {
     try {
       pane.setPage(he.getURL( ));
       if (urlField != null) {
         urlField.setText(he.getURL( ).toString( ));
       }
     }
     catch (FileNotFoundException fnfe) {
       pane.setText("Could not open file: <tt>" + he.getURL( ) + 
                    "</tt>.<hr>");
     }
     catch (Exception e) {
       e.printStackTrace( );
     }
   }
 }
}
}
#10

أعتقد المرفق ما بين في الرد السابق فأرفقت هان، إن شاء الله بظهر .

و شكرأ

السلام عليكم

Browser Code.zip

#11

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

Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Programmers combine theory and practice: Nothing works and they don't know why

#12

السلام عليكم

شكراُ أخي رامي علي الأهتمام و المساعدة

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

/**
    * intialize the editoPane to render HTML
    */
 	 HTMLEditorKit kit = new HTMLEditorKit();
 	 editorPane.setEditable(false);

//The new added statement
 	 editorPane.setContentType("text/html")

 	 HTMLDocument doc = (HTMLDocument) (kit.createDefaultDocument());
 	 HTMLDocument htmlDoc = new HTMLDocument();
 	 editorPane.setEditorKit(kit);
 	 editorPane.setDocument( doc);
 	 editorPane.setDocument(htmlDoc);

New version of Browser Code.zip

#13

مالفرق بين النسختين؟؟؟؟

و على فكرة لا مشكة بالاولى العربي ظهر و لكنه ليس جميل و لكنه مقروء

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

Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Programmers combine theory and practice: Nothing works and they don't know why

#14

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

Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Programmers combine theory and practice: Nothing works and they don't know why

#15

حاولت المساعدة لكن..... ظهر الخطأ....

 
java.net.ConnectException: Connection refused: connect
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
        at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
        at java.net.Socket.connect(Socket.java:507)
        at java.net.Socket.connect(Socket.java:457)
        at sun.net.NetworkClient.doConnect(NetworkClient.java:157)
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:365)
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:477)
        at sun.net.www.http.HttpClient.<init>(HttpClient.java:214)
        at sun.net.www.http.HttpClient.New(HttpClient.java:287)
        at sun.net.www.http.HttpClient.New(HttpClient.java:299)
        at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLC
onnection.java:784)
        at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConne
ction.java:736)
        at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection
.java:661)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLCon
nection.java:905)
        at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:367
)
        at javax.swing.JEditorPane.getStream(JEditorPane.java:689)
        at javax.swing.JEditorPane.setPage(JEditorPane.java:406)
        at javax.swing.JEditorPane.setPage(JEditorPane.java:790)
        at browser.<init>(browser.java:95)
        at browser.main(browser.java:139)
#16

اخي ابو مازن اظن انه يجب عليك ان تعلم انه لا يستطيع تصفح المواقع اذا كنت تتصل من وراء بروكسي انا اختبرته على localhost

Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Programmers combine theory and practice: Nothing works and they don't know why

#17

السلام عليكم

شكراُ على المساعدة

أخ رامي ما أعتقد أن في مشكلة في البروكسي إطلاقاُ، و خصوصا ما في بروكسي لأنترنت عنا.

المشكلة في شئ ما أنا عارف.

العربي بظهر بس ليس من أول ما يفتح الموقع، بعد ما تنقر على روابط في داخل الموقع و زي ما حكيت مقروء و لكن شكله مو جميل. شو السبب لذلك. مش عارف؟؟؟

السلام عليكم

#18

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

لا العربي طلع عندي من اول مرة بدون ان اضغط ولا رابط

Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Programmers combine theory and practice: Nothing works and they don't know why

#19

السلام عليكم

شكراً يا أخوان علي المساعدة و أفكاركم.

عندي سؤال ثاني و هو كيف يمكن أن البرنامج السابق للمواقع التي تتطلب كلمة سر password و أيضاً ممكن يدعم الصفحات التي تتطلب البروتوكول Https

In English:

How I can let my browser to support for password protected sites.

لكن كيف يا جماعة ممكن أن أضيف إلي البرنامج دعم للبروكسي ؟

السلام عليكم

هذا الموضوع مغلق.

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…