Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

PROGRAMME QUI DONNE LE CODE UNICODE DES CARACTÈRES ARABES SAISIS


Information sur la source

Catégorie :Swing Classé sous : arabe, arabic, unicode, arab Niveau : Débutant Date de création : 28/07/2008 Date de mise à jour : 31/07/2008 09:28:19 Vu / téléchargé: 3 059 / 189

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
Ceux qui ont déjà voulu utiliser l'arabe dans leur application ont toujours eu un problème au début, car ça affichait des caractères bizarres, et il fallait utiliser le code Unicode. C'est pas très pratique de chercher le code Unicode pour chaque caractère; ce petit programme vous permet de saisir une phrase en arabe, et en cliquant sur le bouton transformer, il vous donne son code, et puis vous n'avez qu'à cliquer sur le bouton copier, et le coller dans votre source.
 

Source

  • /*TODO
  • * Il reste d'autres caractères waw avec hamza et co
  • */
  • import java.awt.*;
  • import java.awt.datatransfer.*;
  • import java.awt.event.*;
  • import javax.swing.*;
  • import javax.swing.text.*;
  • import java.util.*;
  • import java.io.File;
  • public class ArabicToUnicode extends JFrame
  • {
  • private JTextField txtArab = null;
  • private JTextArea txtUnicode = null;
  • private JButton btnTranslate = null, btnToClipboard = null;
  • private JScrollPane scroll = null;
  • private JPanel pnTop = null, pnCenter = null, pnKeyboardAr = null;
  • private int w, h, x, y;
  • private ArrayList<String> characters = null;
  • private ArrayList<JButton> buttonsKeyboard = null;
  • public ArabicToUnicode()
  • {
  • super("ArabicToUnicode");
  • /*Enumeration keys = UIManager.getDefaults().keys();
  • while(keys.hasMoreElements())
  • System.out.println(keys.nextElement());*/
  • characters = new ArrayList<String>(); //La liste des caractères saisies
  • w = 600;
  • h = 530;
  • x = ((int)Toolkit.getDefaultToolkit().getScreenSize().getWidth()-w)/2;
  • y = ((int)Toolkit.getDefaultToolkit().getScreenSize().getHeight()-h)/2;
  • Font f_albattar = null;
  • try{
  • //Cette Font n'est pas enregistré dans le système, on doit donc la créer
  • f_albattar = Font.createFont(Font.TRUETYPE_FONT , new File("ae_AlBattar.ttf"));
  • } catch (Exception e){
  • e.printStackTrace();
  • }
  • txtArab = new JTextField(70);
  • txtArab.setPreferredSize(new Dimension(500, 28));
  • if (f_albattar != null)
  • txtArab.setFont(f_albattar.deriveFont(14f));
  • //Je précise un PlainDocument personnalisé pour surveiller l'insertion et la suppression dans le JTextField (voir la classe plus loin)
  • txtArab.setDocument(new MyPlainDocument());
  • //Le texte du bouton est en arabe, donc ce que vous voyez est le code unicode
  • btnTranslate = new JButton("\u062d\u064e\u0648\u0651\u0650\u0644\u0652");
  • btnTranslate.setPreferredSize(new Dimension(70, 28));
  • if (f_albattar != null)
  • btnTranslate.setFont(f_albattar.deriveFont(Font.BOLD, 12f));
  • btnTranslate.addActionListener(new ActionListener()
  • {
  • public void actionPerformed(ActionEvent ae)
  • {
  • for (int i = 0; i < characters.size(); i++)
  • { //
  • if (characters.get(i).equals(" "))
  • txtUnicode.append(" ");
  • else
  • txtUnicode.append(getUnicode(characters.get(i)));//Pour chaque caractère dans la liste, on récupère son code
  • } // Unicode, et on l'ajoute à la JTextArea
  • txtArab.setText(""); // Et finalement, on vide la JTextField
  • }
  • });
  • SpringLayout springLayoutTop = new SpringLayout();
  • pnTop = new JPanel(springLayoutTop);
  • pnTop.setPreferredSize(new Dimension(w, 50));
  • pnTop.setMaximumSize(new Dimension((int)Toolkit.getDefaultToolkit().getScreenSize().getWidth(), 50));
  • springLayoutTop.putConstraint(SpringLayout.WEST, txtArab, 10, SpringLayout.WEST, pnTop);
  • springLayoutTop.putConstraint(SpringLayout.NORTH, txtArab, 10, SpringLayout.NORTH, pnTop);
  • springLayoutTop.putConstraint(SpringLayout.WEST, btnTranslate, 10, SpringLayout.EAST, txtArab);
  • springLayoutTop.putConstraint(SpringLayout.NORTH, btnTranslate, 10, SpringLayout.NORTH, pnTop);
  • springLayoutTop.putConstraint(SpringLayout.EAST, pnTop, 10, SpringLayout.EAST, btnTranslate);
  • pnTop.add(txtArab);
  • pnTop.add(btnTranslate);
  • txtUnicode = new JTextArea(5, 50);
  • scroll = new JScrollPane(txtUnicode);
  • btnToClipboard = new JButton("\u0625\u0650\u0646\u0652\u0633\u064e\u062e\u0652");
  • if (f_albattar != null)
  • btnToClipboard.setFont(f_albattar.deriveFont(Font.BOLD, 12f));
  • btnToClipboard.addActionListener(new ActionListener()
  • {
  • public void actionPerformed(ActionEvent ae)
  • {
  • try{
  • //On récupère le presse-papier du système
  • Clipboard clipBrd = Toolkit.getDefaultToolkit().getSystemClipboard();
  • // On copie le contenu de la JTextArea dans le presse-papier du système
  • clipBrd.setContents(new StringSelection(txtUnicode.getText()), null);
  • } catch(Exception e){
  • e.printStackTrace();
  • }
  • }
  • });
  • SpringLayout springLayoutCenter = new SpringLayout();
  • pnCenter = new JPanel(springLayoutCenter);
  • pnCenter.setPreferredSize(new Dimension(w, 150));
  • pnCenter.setMaximumSize(new Dimension((int)Toolkit.getDefaultToolkit().getScreenSize().getWidth(), 150));
  • springLayoutCenter.putConstraint(SpringLayout.WEST, scroll, 10, SpringLayout.WEST, pnCenter);
  • springLayoutCenter.putConstraint(SpringLayout.EAST, pnCenter, 10, SpringLayout.EAST, pnTop);
  • springLayoutCenter.putConstraint(SpringLayout.EAST, pnCenter, 10, SpringLayout.EAST, scroll);
  • springLayoutCenter.putConstraint(SpringLayout.WEST, btnToClipboard, 0, SpringLayout.WEST, scroll);
  • springLayoutCenter.putConstraint(SpringLayout.NORTH, btnToClipboard, 10, SpringLayout.SOUTH, scroll);
  • pnCenter.add(scroll);
  • pnCenter.add(btnToClipboard);
  • //SpringLayout springLayoutKeyboard = new SpringLayout();
  • pnKeyboardAr = new JPanel(new GridLayout(5, 12));
  • buttonsKeyboard = new ArrayList<JButton>();
  • buttonsKeyboard.add(new JButton("\u0622"));
  • buttonsKeyboard.add(new JButton("\u0627"));
  • buttonsKeyboard.add(new JButton("\u0623"));
  • buttonsKeyboard.add(new JButton("\u0625"));
  • buttonsKeyboard.add(new JButton("\u0621"));
  • buttonsKeyboard.add(new JButton("\u0628"));
  • buttonsKeyboard.add(new JButton("\u062A"));
  • buttonsKeyboard.add(new JButton("\u0629"));
  • buttonsKeyboard.add(new JButton("\u062B"));
  • buttonsKeyboard.add(new JButton("\u062C"));
  • buttonsKeyboard.add(new JButton("\u062D"));
  • buttonsKeyboard.add(new JButton("\u062E"));
  • buttonsKeyboard.add(new JButton("\u062F"));
  • buttonsKeyboard.add(new JButton("\u0630"));
  • buttonsKeyboard.add(new JButton("\u0631"));
  • buttonsKeyboard.add(new JButton("\u0632"));
  • buttonsKeyboard.add(new JButton("\u0633"));
  • buttonsKeyboard.add(new JButton("\u0634"));
  • buttonsKeyboard.add(new JButton("\u0635"));
  • buttonsKeyboard.add(new JButton("\u0636"));
  • buttonsKeyboard.add(new JButton("\u0637"));
  • buttonsKeyboard.add(new JButton("\u0638"));
  • buttonsKeyboard.add(new JButton("\u0639"));
  • buttonsKeyboard.add(new JButton("\u063A"));
  • buttonsKeyboard.add(new JButton("\u0641"));
  • buttonsKeyboard.add(new JButton("\u0642"));
  • buttonsKeyboard.add(new JButton("\u0643"));
  • buttonsKeyboard.add(new JButton("\u0644"));
  • buttonsKeyboard.add(new JButton("\u0645"));
  • buttonsKeyboard.add(new JButton("\u0646"));
  • buttonsKeyboard.add(new JButton("\u0647"));
  • buttonsKeyboard.add(new JButton("\u0648"));
  • buttonsKeyboard.add(new JButton("\u064A"));
  • buttonsKeyboard.add(new JButton("\u064B"));
  • buttonsKeyboard.add(new JButton("\u064D"));
  • buttonsKeyboard.add(new JButton("\u064E"));
  • buttonsKeyboard.add(new JButton("\u064F"));
  • buttonsKeyboard.add(new JButton("\u0650"));
  • buttonsKeyboard.add(new JButton("\u0651"));
  • buttonsKeyboard.add(new JButton("\u0652"));
  • buttonsKeyboard.add(new JButton("\u0660"));
  • buttonsKeyboard.add(new JButton("\u0661"));
  • buttonsKeyboard.add(new JButton("\u0662"));
  • buttonsKeyboard.add(new JButton("\u0663"));
  • buttonsKeyboard.add(new JButton("\u0664"));
  • buttonsKeyboard.add(new JButton("\u0665"));
  • buttonsKeyboard.add(new JButton("\u0666"));
  • buttonsKeyboard.add(new JButton("\u0667"));
  • buttonsKeyboard.add(new JButton("\u0668"));
  • buttonsKeyboard.add(new JButton("\u0669"));
  • if (f_albattar != null)
  • for (int i = 0; i < buttonsKeyboard.size(); i++)
  • buttonsKeyboard.get(i).setFont(f_albattar.deriveFont(30f));
  • for (int i = 0; i < buttonsKeyboard.size(); i++)
  • {
  • pnKeyboardAr.add(buttonsKeyboard.get(i));
  • buttonsKeyboard.get(i).addActionListener(new ActionListener()
  • {
  • public void actionPerformed(ActionEvent ae)
  • { //Puisque je n'ai pas précisé l'actioncommand des boutons, getActionCommand() retourne le texte des boutons
  • txtArab.setText(txtArab.getText()+ae.getActionCommand());
  • txtArab.requestFocusInWindow(); //On remet le focus dans la zone de texte
  • }
  • });
  • }
  • setContentPane(new Box(BoxLayout.PAGE_AXIS));
  • getContentPane().add(pnTop);
  • getContentPane().add(Box.createVerticalStrut(10));
  • getContentPane().add(pnCenter);
  • getContentPane().add(Box.createVerticalStrut(10));
  • getContentPane().add(pnKeyboardAr);
  • //getContentPane().add(Box.createVerticalGlue());
  • Locale l = new Locale("ar");
  • //L'orientation de la fenêtre et de ses enfants (droite->gauche)
  • applyComponentOrientation(ComponentOrientation.getOrientation(l));
  • setLocale(l); //On définit la Locale de la JFrame comme étant l'arabe
  • txtUnicode.setLocale(Locale.FRENCH);////On définit la Locale de la JTextArea comme étant le français. (pas besoin de l'arabe)
  • txtUnicode.applyComponentOrientation(ComponentOrientation.getOrientation(Locale.FRENCH));
  • setBounds(x, y, w, h);
  • setDefaultCloseOperation(EXIT_ON_CLOSE);
  • setVisible(true);
  • }
  • private class MyPlainDocument extends PlainDocument
  • {
  • public void insertString(int offs, String str, AttributeSet a) throws BadLocationException
  • {
  • if (str.equals(" ") ||
  • (str.codePointAt(0) >= 0x600 && str.codePointAt(0) <= 0x6ff))//Les caractères arabes sont compris entre
  • { //0600 et 06FF (hexadécimal bien sûr)
  • for(int i = 0; i < str.length(); i++)
  • {
  • characters.add(str.substring(i, i+1)); //On remplit notre liste
  • }
  • super.insertString(offs, str, a);
  • }
  • else
  • {
  • JOptionPane.showMessageDialog(ArabicToUnicode.this, "This is not an arabic character.",
  • "\u0625\u0646\u0630\u0627\u0631", JOptionPane.WARNING_MESSAGE);
  • }
  • }
  • public void remove(int offs, int len) throws BadLocationException
  • {
  • for (int i = offs; i < offs+len; i++) //Les éléments de l'ArrayList sont décalés à gauche après chaque suppression,
  • characters.remove(offs); //par exp, on a remove(1, 3), on supprime d'abord l'élément 1, décalage à gauche,
  • super.remove(offs, len); // l'élément 2 prends la place 1, et ainsi de suite.
  • }
  • }
  • private String getUnicode(String arChar)
  • {
  • // La méthode codePointAt(int i) de la classe String retourne le code unicode du caractère à l'index i en décimal
  • // La méthode Integer.toHexString(int code) retourne la chaine qui représente l'argument int en héxadécimal
  • String code = "\\u0" + Integer.toHexString(arChar.codePointAt(0));
  • return code;
  • }
  • public static void main(String[] args)
  • {
  • //Je change le texte affiché par le bouton ok de la JOptionPane
  • UIManager.put("OptionPane.okButtonText", "\u0645\u0648\u0627\u0641\u0642");
  • SwingUtilities.invokeLater(new Runnable(){
  • public void run()
  • {
  • new ArabicToUnicode();
  • }
  • });
  • }
  • }
/*TODO
*	Il reste d'autres caractères waw avec hamza et co
*/

import java.awt.*;
import java.awt.datatransfer.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.text.*;
import java.util.*;
import java.io.File;

public class ArabicToUnicode extends JFrame
{
	private JTextField txtArab = null;
	private JTextArea txtUnicode = null;
	private JButton btnTranslate = null, btnToClipboard = null;
	private JScrollPane scroll = null;
	private JPanel pnTop = null, pnCenter = null, pnKeyboardAr = null;
	private int w, h, x, y;
	private ArrayList<String> characters = null;			
	private ArrayList<JButton> buttonsKeyboard = null;
	
	public ArabicToUnicode()
	{
		super("ArabicToUnicode");
		/*Enumeration keys = UIManager.getDefaults().keys();
		while(keys.hasMoreElements())
			System.out.println(keys.nextElement());*/
		characters = new ArrayList<String>();				//La liste des caractères saisies
		w = 600;
		h = 530;
		x = ((int)Toolkit.getDefaultToolkit().getScreenSize().getWidth()-w)/2;
		y = ((int)Toolkit.getDefaultToolkit().getScreenSize().getHeight()-h)/2;
		
		Font f_albattar = null;
		try{
			//Cette Font n'est pas enregistré dans le système, on doit donc la créer
			f_albattar = Font.createFont(Font.TRUETYPE_FONT , new File("ae_AlBattar.ttf"));
		} catch (Exception e){
			e.printStackTrace();
		}
		
		txtArab = new JTextField(70);
		txtArab.setPreferredSize(new Dimension(500, 28));
		if (f_albattar != null)
			txtArab.setFont(f_albattar.deriveFont(14f));
		//Je précise un PlainDocument personnalisé pour surveiller l'insertion et la suppression dans le JTextField (voir la classe plus loin)
		txtArab.setDocument(new MyPlainDocument());
		//Le texte du bouton est en arabe, donc ce que vous voyez est le code unicode 
		btnTranslate = new JButton("\u062d\u064e\u0648\u0651\u0650\u0644\u0652");
		btnTranslate.setPreferredSize(new Dimension(70, 28));
		if (f_albattar != null)
			btnTranslate.setFont(f_albattar.deriveFont(Font.BOLD, 12f));
		btnTranslate.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent ae)
			{
				for (int i = 0; i < characters.size(); i++)	
				{											// 
					if (characters.get(i).equals(" "))
						txtUnicode.append(" ");
					else
						txtUnicode.append(getUnicode(characters.get(i)));//Pour chaque caractère dans la liste, on récupère son code 
				}														// Unicode, et on l'ajoute à la JTextArea		
				txtArab.setText("");									// Et finalement, on vide la JTextField
			}
		});
		
		SpringLayout springLayoutTop = new SpringLayout();
		pnTop = new JPanel(springLayoutTop);
		pnTop.setPreferredSize(new Dimension(w, 50));
		pnTop.setMaximumSize(new Dimension((int)Toolkit.getDefaultToolkit().getScreenSize().getWidth(), 50));
		
		springLayoutTop.putConstraint(SpringLayout.WEST, txtArab, 10, SpringLayout.WEST, pnTop);
		springLayoutTop.putConstraint(SpringLayout.NORTH, txtArab, 10, SpringLayout.NORTH, pnTop);
		springLayoutTop.putConstraint(SpringLayout.WEST, btnTranslate, 10, SpringLayout.EAST, txtArab);
		springLayoutTop.putConstraint(SpringLayout.NORTH, btnTranslate, 10, SpringLayout.NORTH, pnTop);
		springLayoutTop.putConstraint(SpringLayout.EAST, pnTop, 10, SpringLayout.EAST, btnTranslate);
		
		pnTop.add(txtArab);
		pnTop.add(btnTranslate);
		
		txtUnicode = new JTextArea(5, 50);
		scroll = new JScrollPane(txtUnicode);
		btnToClipboard = new JButton("\u0625\u0650\u0646\u0652\u0633\u064e\u062e\u0652");
		if (f_albattar != null)
			btnToClipboard.setFont(f_albattar.deriveFont(Font.BOLD, 12f));
		btnToClipboard.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent ae)
			{
				try{
					//On récupère le presse-papier du système
					Clipboard clipBrd = Toolkit.getDefaultToolkit().getSystemClipboard();
					// On copie le contenu de la JTextArea dans le presse-papier du système
					clipBrd.setContents(new StringSelection(txtUnicode.getText()), null);
				} catch(Exception e){
					e.printStackTrace();
				}
			}
		});
		
		SpringLayout springLayoutCenter = new SpringLayout();
		pnCenter = new JPanel(springLayoutCenter);
		pnCenter.setPreferredSize(new Dimension(w, 150));
		pnCenter.setMaximumSize(new Dimension((int)Toolkit.getDefaultToolkit().getScreenSize().getWidth(), 150));
		
		springLayoutCenter.putConstraint(SpringLayout.WEST, scroll, 10, SpringLayout.WEST, pnCenter);
		springLayoutCenter.putConstraint(SpringLayout.EAST, pnCenter, 10, SpringLayout.EAST, pnTop);
		springLayoutCenter.putConstraint(SpringLayout.EAST, pnCenter, 10, SpringLayout.EAST, scroll);
		springLayoutCenter.putConstraint(SpringLayout.WEST, btnToClipboard, 0, SpringLayout.WEST, scroll);
		springLayoutCenter.putConstraint(SpringLayout.NORTH, btnToClipboard, 10, SpringLayout.SOUTH, scroll);
		
		pnCenter.add(scroll);
		pnCenter.add(btnToClipboard);

		//SpringLayout springLayoutKeyboard = new SpringLayout();
		pnKeyboardAr = new JPanel(new GridLayout(5, 12));
		
		buttonsKeyboard = new ArrayList<JButton>();
		buttonsKeyboard.add(new JButton("\u0622"));
		buttonsKeyboard.add(new JButton("\u0627"));
		buttonsKeyboard.add(new JButton("\u0623"));
		buttonsKeyboard.add(new JButton("\u0625"));
		buttonsKeyboard.add(new JButton("\u0621"));
		buttonsKeyboard.add(new JButton("\u0628"));
		buttonsKeyboard.add(new JButton("\u062A"));
		buttonsKeyboard.add(new JButton("\u0629"));
		buttonsKeyboard.add(new JButton("\u062B"));	
		buttonsKeyboard.add(new JButton("\u062C"));
		buttonsKeyboard.add(new JButton("\u062D"));
		buttonsKeyboard.add(new JButton("\u062E"));
		buttonsKeyboard.add(new JButton("\u062F"));
		buttonsKeyboard.add(new JButton("\u0630"));		
		buttonsKeyboard.add(new JButton("\u0631"));
		buttonsKeyboard.add(new JButton("\u0632"));
		buttonsKeyboard.add(new JButton("\u0633"));
		buttonsKeyboard.add(new JButton("\u0634"));
		buttonsKeyboard.add(new JButton("\u0635"));
		buttonsKeyboard.add(new JButton("\u0636"));
		buttonsKeyboard.add(new JButton("\u0637"));		
		buttonsKeyboard.add(new JButton("\u0638"));
		buttonsKeyboard.add(new JButton("\u0639"));
		buttonsKeyboard.add(new JButton("\u063A"));
		buttonsKeyboard.add(new JButton("\u0641"));
		buttonsKeyboard.add(new JButton("\u0642"));		
		buttonsKeyboard.add(new JButton("\u0643"));
		buttonsKeyboard.add(new JButton("\u0644"));
		buttonsKeyboard.add(new JButton("\u0645"));
		buttonsKeyboard.add(new JButton("\u0646"));
		buttonsKeyboard.add(new JButton("\u0647"));
		buttonsKeyboard.add(new JButton("\u0648"));
		buttonsKeyboard.add(new JButton("\u064A"));
		buttonsKeyboard.add(new JButton("\u064B"));
		buttonsKeyboard.add(new JButton("\u064D"));
		buttonsKeyboard.add(new JButton("\u064E"));
		buttonsKeyboard.add(new JButton("\u064F"));
		buttonsKeyboard.add(new JButton("\u0650"));
		buttonsKeyboard.add(new JButton("\u0651"));
		buttonsKeyboard.add(new JButton("\u0652"));
		
		buttonsKeyboard.add(new JButton("\u0660"));
		buttonsKeyboard.add(new JButton("\u0661"));
		buttonsKeyboard.add(new JButton("\u0662"));		
		buttonsKeyboard.add(new JButton("\u0663"));
		buttonsKeyboard.add(new JButton("\u0664"));
		buttonsKeyboard.add(new JButton("\u0665"));
		buttonsKeyboard.add(new JButton("\u0666"));
		buttonsKeyboard.add(new JButton("\u0667"));
		buttonsKeyboard.add(new JButton("\u0668"));
		buttonsKeyboard.add(new JButton("\u0669"));
		
		
		if (f_albattar != null)
			for (int i = 0; i < buttonsKeyboard.size(); i++)
				buttonsKeyboard.get(i).setFont(f_albattar.deriveFont(30f));
		for (int i = 0; i < buttonsKeyboard.size(); i++)
		{
			pnKeyboardAr.add(buttonsKeyboard.get(i));
			buttonsKeyboard.get(i).addActionListener(new ActionListener()
			{
				public void actionPerformed(ActionEvent ae)
				{	//Puisque je n'ai pas précisé l'actioncommand des boutons, getActionCommand() retourne le texte des boutons
					txtArab.setText(txtArab.getText()+ae.getActionCommand());
					txtArab.requestFocusInWindow();	//On remet le focus dans la zone de texte
				}
			});
		}
		
		setContentPane(new Box(BoxLayout.PAGE_AXIS));
		getContentPane().add(pnTop);
		getContentPane().add(Box.createVerticalStrut(10));
		getContentPane().add(pnCenter);
		getContentPane().add(Box.createVerticalStrut(10));
		getContentPane().add(pnKeyboardAr);
		//getContentPane().add(Box.createVerticalGlue());
		
		Locale l = new Locale("ar");	
		//L'orientation de la fenêtre et de ses enfants (droite->gauche)
		applyComponentOrientation(ComponentOrientation.getOrientation(l)); 
		setLocale(l);			//On définit la Locale de la JFrame comme étant l'arabe
		txtUnicode.setLocale(Locale.FRENCH);////On définit la Locale de la JTextArea comme étant le français. (pas besoin de l'arabe)
		txtUnicode.applyComponentOrientation(ComponentOrientation.getOrientation(Locale.FRENCH));
		setBounds(x, y, w, h);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setVisible(true);
	}
		
	private class MyPlainDocument extends PlainDocument
	{
		public void insertString(int offs, String str, AttributeSet a) throws BadLocationException
		{
			if (str.equals(" ") || 
					(str.codePointAt(0) >= 0x600 && str.codePointAt(0) <= 0x6ff))//Les caractères arabes sont compris entre 
			{																	//0600 et 06FF (hexadécimal bien sûr)
				for(int i = 0; i < str.length(); i++)
				{	
					characters.add(str.substring(i, i+1));	//On remplit notre liste
				}
				super.insertString(offs, str, a);
			}
			else
			{
				JOptionPane.showMessageDialog(ArabicToUnicode.this, "This is not an arabic character.", 
						"\u0625\u0646\u0630\u0627\u0631", JOptionPane.WARNING_MESSAGE);
			}
		}
		public void remove(int offs, int len) throws BadLocationException
		{
			for (int i = offs; i < offs+len; i++)	//Les éléments de l'ArrayList sont décalés à gauche après chaque suppression,
				characters.remove(offs);			//par exp, on a remove(1, 3), on supprime d'abord l'élément 1, décalage à gauche,
			super.remove(offs, len);				// l'élément 2 prends la place 1, et ainsi de suite.
		}
	}
	
	private String getUnicode(String arChar)
	{
		// La méthode codePointAt(int i) de la classe String retourne le code unicode du caractère à l'index i en décimal
		// La méthode Integer.toHexString(int code) retourne la chaine qui représente l'argument int en héxadécimal 
		String code = "\\u0" + Integer.toHexString(arChar.codePointAt(0));
		return code;
	}
	
	public static void main(String[] args)
	{
		//Je change le texte affiché par le bouton ok de la JOptionPane
		UIManager.put("OptionPane.okButtonText", "\u0645\u0648\u0627\u0641\u0642");
		SwingUtilities.invokeLater(new Runnable(){
			public void run()
			{
				new ArabicToUnicode();
			}
		});
	}
}

Conclusion

Je pense ajouter quelques bouton au programme comme un petit clavier pour ceux comme moi qui n'ont pas l'habitude du clavier arabe.

J'espère que ce code vous aidera un peu.
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • ae_AlBattar.ttfTélécharger ce fichier [Réservé aux membres club]141 856 octets
  • ArabicToUnicode$1.classTélécharger ce fichier [Réservé aux membres club]1 216 octets
  • ArabicToUnicode$2.classTélécharger ce fichier [Réservé aux membres club]1 142 octets
  • ArabicToUnicode$3.classTélécharger ce fichier [Réservé aux membres club]957 octets
  • ArabicToUnicode$4.classTélécharger ce fichier [Réservé aux membres club]414 octets
  • ArabicToUnicode$MyPlainDocument.classTélécharger ce fichier [Réservé aux membres club]1 477 octets
  • ArabicToUnicode.classTélécharger ce fichier [Réservé aux membres club]7 329 octets
  • ArabicToUnicode.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier10 812 octets
  • unicode_ar_U0600.pdfTélécharger ce fichier [Réservé aux membres club]174 097 octets

Télécharger le zip

Historique

28 juillet 2008 15:46:53 :
Le problème du texte collé directement dans la JTextField est résolue.
28 juillet 2008 15:48:35 :
Le problème du texte collé directement dans la JTextField est résolue.
28 juillet 2008 15:49:15 :
Le problème du texte collé directement dans la JTextField est résolue.
29 juillet 2008 17:52:00 :
J'ai ajouté quelques boutons en guise de clavier.
31 juillet 2008 09:24:45 :
J'ai ajouté les boutons des caractères pour le '<em>tachkil</em>'
31 juillet 2008 09:28:19 :
J'ai ajouté quelques caractères de 'tachkil'

Commentaires et avis

signaler à un administrateur
Commentaire de mnouzahir le 06/08/2008 18:14:21

Salam,paix,
j'ai pas encore testé le code mais c'est vraiment ce que je cherche.

bravo et merci

signaler à un administrateur
Commentaire de mnouzahir le 06/08/2008 18:15:26

Salam,paix,
j'ai pas encore testé le code mais c'est vraiment ce que je cherche.

bravo et merci

signaler à un administrateur
Commentaire de herisch le 09/08/2008 16:09:37

Teste le et dis moi ce que t'en penses. Et s'il y a quelque chose à ajouter.

signaler à un administrateur
Commentaire de Chatbour le 09/08/2008 23:35:30

Salut,

globalement bon travail, mais juste une petite remarque : le code pourrait être plus lisible et plus compacte..

signaler à un administrateur
Commentaire de mnouzahir le 11/08/2008 10:56:38 10/10

bon travail,
mais comme il a dit Chatbour il peut devenir mieu.
bonne chance

signaler à un administrateur
Commentaire de herisch le 11/08/2008 19:05:06

C'est seulement le positionnement des composants avec le SpringLayout qui rend le code peu lisible. Ca aurait pu être pire avec le GridBagLayout

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

language arab + swing [ par fraisa1985 ] comment je peux ecrire dans une interface swing en java .je suis entrain de faire une application internationale (anglais ,français,arabe).Pour cela j java + arabic [ par deadmannn ] salut, ceci est un sos...g un ptit prob avec java et my sql..g developpé une petite application avec java , et elle est sencée stocker ds la base de d Transformer un code (unicode?) en lettre... [ par z980x ] Bonjour à tous,j'ai fait un programme qui, au bout d'un moment, me donne des nombres correspondant à des lettres. (Exemple: a-&gt;10, b-&gt;11, etc... JTable et titre des colonnes en unicode [ par breathfromhell ] salut j aimerais bien savoir comment faire pour pouvoir afficher le nom des colonne en unicode quand j essaye de le faire les tires sont remplaces par application en arabe [ par amelrc ] Est ce que java permet de faire des applications en arabe?si oui comment le faire?Cordialement Shaper les chiffre Arabe [ par kobari ] Bonjour,J'ai associé un DocumentFilter à un JTextField et j'essaie de formatter les entrées comme un numero de teléphone avec un format  comme (####)# Arabisation [ par amnAngel ] angel je suis entrain de réalise un analyseur lexical de la langue arabe, ma BD elle est en arabe, je veux récupérer des données de ma base et les a Analyse lexicale de l'arabe [ par amnAngel ] angelje veux récupérer des données arabea à partir d'une base de données MySQL, et les afficher dans une interface graphique réalisée en java. j'ai re analyseur de texte arabe [ par insafa ] salut, j'ai un projet sur l'analyse automatique de textes en langue arabe. Il s'agit de réaliser un analyseur motphologique. je demande de l'aide pour ecrire en arabe dans une applet [ par nouhabouzid ] salut j'utilise ultraedit32bits pour ecrire mes sources en java  et j'ai le jdk1.2 installe sous winxp pack2/pack3.je veux develloper des applets en a


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,265 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.