mkstraits
Messages postés6Date d'inscriptionsamedi 14 décembre 2002StatutMembreDernière intervention19 décembre 2002
-
14 déc. 2002 à 15:12
JHelp
Messages postés261Date d'inscriptionjeudi 5 septembre 2002StatutMembreDernière intervention 6 octobre 2005
-
19 déc. 2002 à 19:52
salut !
à partir d'une interface swing java, on est supposé pouvoir entrer des formules (dans un certain langage de logique) exemple simple:
(a.b)=(c+d)|(a.c)
ppuis on doit sauvegarder tout ceci dans un fichier XML.....
1er souci : on a dû créer une font qui permet d'écrire des caractères avec une barre au dessus (exigences du langages!!) mais on arrive pas à la rajouter aux fonts disponibles pour l'utiliser.
2ème souci : on arrive pas dans le même Jtextfield et le même Jeditorpane à écrire 2 caractères l'un à côté de l'autre mais avec des polices différentes ! on arrive à changer la police sur tout le Jeditorpane ou tout le Jtextfield.
3ème souci : pour écrire les balises du fichier XML, on a besoin de transformer chaque formule en arbre binaire(on la récupère dans une chaine de caractère d'abord) avec les caractères en tant que feuilles et les opérateurs en tant que noeud. L'algorithme doit être faisable, mais on manque de temps pour finir notre projet et réviser nos partiels..
mkstraits
Messages postés6Date d'inscriptionsamedi 14 décembre 2002StatutMembreDernière intervention19 décembre 2002 17 déc. 2002 à 19:45
j'essaie depuis deux jours de poster ce message pour dire merci et demander d'autres précisions, mais le forum n'a pas l'air de fonctionner très bien !!!!!
mkstraits
Messages postés6Date d'inscriptionsamedi 14 décembre 2002StatutMembreDernière intervention19 décembre 2002 17 déc. 2002 à 19:53
puisque ça marche maintenant, j'en profite pour poster mon message !!
merci jhelp !
mes questions peuvent paraître un peu bêtes, mais quand j'essaie d'utiliser le +'\u0305', (ou n'importe quel autre d'ailleurs), ça m'affiche un carré à côté de mon caractère ou ma chaîne de caractère.....
concernant le JtextPane, il me semble que c'est une classe qui hérite de JEditorPane... et je ne vois aucune méthode qui me permet de changer la police sur un caractère sans le changer sur l'autre. y a -t-il un tutorial quelconque sur le site de sun ou ailleurs qui explique tout ceci????
concernant lea partie XML, nous avons un nouveau souci :
le fichier .xml est créé sans problème, par contre, il est vide !
out = new PrintWriter(new FileOutputStream("formule.xml"));
puis
out.write("<!DOCTYPE USERS SYSTEM "formule.dtd">"); out.write("<FORMULE>");
ne fait que nous créer le fichier vide !!!! comment est-ce possible ??
mkstraits
Messages postés6Date d'inscriptionsamedi 14 décembre 2002StatutMembreDernière intervention19 décembre 2002 17 déc. 2002 à 19:54
ne prends pas en compte ce que j'ai dit concernant la partie XML.... ça marche pour écrire dans le fichier et créer les balises.... le souci maintenant est de relire le fichier XML. Je ne vois pas trop comment faire la parser et le document handler....merci...
mkstraits
Vous n’avez pas trouvé la réponse que vous recherchez ?
JHelp
Messages postés261Date d'inscriptionjeudi 5 septembre 2002StatutMembreDernière intervention 6 octobre 200511 18 déc. 2002 à 09:50
Pour le caractère surligner, il faut que tu utilises un police qui accèpte l'unicode, chez moi avec Font police=new Font("Dialog",Font.PLAIN,14); çà marche.
Faire un parseur, n'est pas simple et un peu long, donc si tu n'as pas beaucoup de temps, essaie de voir avec (si tu peux) le jdk 1.4. Il y en a des tout fait.
Autrement, il va me falloir plus de détails sur ton programme, et sur XML, çà fait un bout de temps que j'en ai pas fait.
Si mes souvenirs sont bon, quand on a <Quelque chose>, on a un blaise fermante </Quelque chose> pour limité, comme en HTML.
Tupeux déja te servir de cette propriété.
En ademetant que tu as la classe Balise, qui se construit avec un nom et un contenu pouvant etre n'importe qu'elle instruction XML, même du simple texte.
Je suppose que ta structure est du type :
import java.io.*;
public abstract class InstructionXML()
{
public abstract static InstructionXML parser(RandomAcessFile raf,int debut,int lg) throws IOException;
public final static InstructionXML(String fichier) throws IOException
{
RandomAccessFile raf=new RandomAccessFile(fichier,"r");
InstructionXML rep=null;
if(estBalise(raf,0))
rep=Balise.parser(raf,0,raf.length());
esle
rep=SimpleTexte(raf,0,raf.length());
raf.close();
return rep;
}
protected final static boolean estBalise(RandomAccesFile raf,int debut) throws IOException
{
raf.seek(debut);
return raf.readChar()=='<';
}
}
--------
import java.io.*;
public class SimpleTexte extends InstructionXML
{
//ton code
//...........
mkstraits
Messages postés6Date d'inscriptionsamedi 14 décembre 2002StatutMembreDernière intervention19 décembre 2002 19 déc. 2002 à 17:15
bonsoir !!!!
merci beaucoup JHELP !!!
en effet, c'est bon pour les caractères surlignés !!!! il reste quelques détails à gérer, mais le plus important est que ça marche !!!!
nous avons créé notre fichier XML à partir d'une formule qu'on entre en dur dans notre programme. En effet, une formule va être lue comme un arbre, mais l'arbre ne sera pas créé, c'est les balises XML qui seront créées. leur structure sera celle d'un arbre. exemple : a=b donnera en XML, <egalite>
<caractere>a</caractere>
<caractere>b</caractere>
</egalite>
ce qu'il nous manque, c'est le code qui nous permet de lire dans le fichier XML et reconstituer notre formule. le but étant d'implanter le tout dans nos fonctions sauvegarder et ouvrir de notre editeur, pour permettre à l'utilisateur de sauvegarder ses formules en un fichier XML (chaque ligne dans l'éditeur correspond à une formule) et de réafficher ses formules à partir du fichier XML.
Voici le code qui permet de créer le fichier XML. Il me faudra des indications, explications concernant ce qu'il faut faire pour lire le fichier XML, car j'avoue qu'on est un peu perdu.
package creationxml;
import java.lang.*;
public abstract class Arbre
{
protected Arbre filsGauche, filsDroit;
public Arbre()
{
}
/*
**** le new qui marche pas faudra trouver une parade
indexdebut = formule.indexOf(" new ");
System.out.println("notre index debut est:" + indexdebut);
indexfin= formule.indexOf("b",5);
System.out.println("notre index fin est:" + indexfin);
if(indexdebut != -1)
{
try
{ //l'expression que l'on vient de déclarer
ecrire.write("<NOUVEAU>"+"\n");
ecrire.write(formule.substring(indexdebut+5, indexfin)+"\n");
ecrire.write("</NOUVEAU>"+"\n");
}
catch(IOException ioe){System.out.println("erreur in: " + ioe );}
class Chaine
{
private BufferedReader in;
private String formule;
public Chaine()
{
try
{
in= new BufferedReader( new InputStreamReader(System.in));
formule= in.readLine();
}
catch(IOException e) {};
}
public String getFormule()
{
return formule;
}
}
public class TestArbre
{
private static ArbreCreation A;
public static void main (String[] args)
{
System.out.println("entrer votre formule:");
Chaine Chaine1= new Chaine();
A = new ArbreCreation(Chaine1.getFormule());
System.out.println("votre fichier a été créé");
JHelp
Messages postés261Date d'inscriptionjeudi 5 septembre 2002StatutMembreDernière intervention 6 octobre 200511 19 déc. 2002 à 19:52
Bonsoir,
Bon j'ai pas le temps ce soir de développer plus, mais je peux te donner quelques pistes.
En supposant que ton fichier XML est syntaxiquement corecte, tu récupére la première balise entre < et > en fonction de son nom tu fait le traitement approprié.
Je m'explique pour :
<egalite>
<caractere>a</caractere>
<caractere>b</caractere>
</egalite>
tu récupéres egalite donc tu sait qu'il s'iagit du symbol =, qu'il posséde 2 arguments, construit fils gauche, puis fils droit.
Don tu traites d'abord le fils gauche, par récusion, cette fois-ci tu trouves caracter ,donc tu sais qu'il ne poséde qu'un seul argument entre > et <, tu peux ainsi le rcupérer, puis l'écrire. Tu avnt ensiute j'uqu'au > et tu termines le traitement pour le caractére.
Par récursion, ton prog, va se retrouvé à avoir fini le premier argument de l'égalité, donc tu met le =
Et en suite tu taites le second.
Ca va tu vois ce que je veux dire. Dans ma tête l'algo est clair, mais je ne suis pas sur de l'avoir été.
JHelp