Problème récupération d'un mot dans jtextpane

sisisousou
Messages postés
43
Date d'inscription
samedi 5 janvier 2008
Statut
Membre
Dernière intervention
24 janvier 2012
- 17 mars 2011 à 17:44
sisisousou
Messages postés
43
Date d'inscription
samedi 5 janvier 2008
Statut
Membre
Dernière intervention
24 janvier 2012
- 18 mars 2011 à 13:19
salut tout le monde
le projet que je réalise me rend dingue !!!
voila je veut changer le curseur l’osque le souris passe sur un text
voila ce que j'utilise mais j'ai une erreur
Exception in thread "AWT-EventQueue-1" java.lang.StringIndexOutOfBoundsException: String index out of range: -101

mon code
public void mouseMoved(MouseEvent e)
    {
        String handel;
        Document doc;
        int pos = textzone.viewToModel(e.getPoint());
        elem = textzone.getStyledDocument().getCharacterElement(pos);
        as = elem.getAttributes(); 
        int posdepart = pos;
        for(; StyleConstants.getBidiLevel(as) 20; as textzone.getStyledDocument().getCharacterElement(posdepart).getAttributes())
        {
            posdepart--;
        }
 
        handel = null;
        doc = textzone.getDocument(); 
        try
        {
            handel = doc.getText(0, doc.getLength()).substring(posdepart, doc.getText(0, doc.getLength()).indexOf(" ", posdepart + 1));
            
        }
        catch(BadLocationException ex) {}
        if(handel == null)
        {
            return;
        }
        handel = handel.replaceAll(">", "").trim();
        textzone.setCursor(new Cursor(12));
        if(StyleConstants.getBidiLevel(as) 21 || StyleConstants.getBidiLevel(as) 22)
        {
            textzone.setCursor(new Cursor(12));
        } else
        {
            //hyperlinkReceiver.hidePopupInfos();
            textzone.setCursor(new Cursor(0));
        }
    }
 

l'erreur et dans cette ligne
 handel = doc.getText(0, doc.getLength()).substring(posdepart, doc.getText(0, doc.getLength()).indexOf(" ", posdepart + 1));

5 réponses

Utilisateur anonyme
17 mars 2011 à 20:03
Salut,

Manifestement l'index début est > l'index fin de substring.

Peux-tu essayer:
handel = doc.getText(0, doc.getLength()).substring(posdepart, doc.getText(0, doc.getLength()).indexOf(" "));// sans , posdepart + 1));


...\ Dan /...
0
sisisousou
Messages postés
43
Date d'inscription
samedi 5 janvier 2008
Statut
Membre
Dernière intervention
24 janvier 2012

17 mars 2011 à 21:40
nop toujours la meme erreur
0
sisisousou
Messages postés
43
Date d'inscription
samedi 5 janvier 2008
Statut
Membre
Dernière intervention
24 janvier 2012

17 mars 2011 à 22:01
bon je problème vien excatement quand la souris passe et qu'il n'y a pas de text ya une solution pour sa ? j'ai entendu parlé d'un truc
break MISSING_BLOCK_LABEL_299;

comment je l'utilise s'il vous plait
0
Utilisateur anonyme
18 mars 2011 à 03:52
Et s'il y a un texte ?

Ajouter les 2 lignes marquées <<<<<<<<<<<< (println) et voir ce qu'on a.
int pos = textzone.viewToModel(e.getPoint());
        elem = textzone.getStyledDocument().getCharacterElement(pos);
        as = elem.getAttributes(); 
        int posdepart = pos;
System.out.println("posdepart: + posdepart"); // = pixels <<<<<<<<<<<<
        for(; StyleConstants.getBidiLevel(as) 20; as textzone.getStyledDocument().getCharacterElement(posdepart).getAttributes())
        {
            posdepart--;
        }
System.out.println("posdepart: + posdepart"); // = ??? <<<<<<<<<<<<<<<


Faire également ce test:
handel = null;
        doc = textzone.getDocument(); 
        try
        {
        /* handel = doc.getText(0, doc.getLength()).substring(posdepart, doc.getText(0, doc.getLength()).indexOf(" ", posdepart + 1)); */
handel = doc.substring(0, doc.indexOf(" "));
         System.out.println("\nhandel = " + """ + handel + """);        }

et voir si on obtient le 1er mot...


...\ Dan /...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sisisousou
Messages postés
43
Date d'inscription
samedi 5 janvier 2008
Statut
Membre
Dernière intervention
24 janvier 2012

18 mars 2011 à 13:19
j'ai réussi a récupérer le mot
mon problème maintenant je veut savoir comment utiliser le break missing label
par ce que dans ma méthode je doit faire un break et avec
break ;

tout court sa fonctionne pas ni continue ;
alors une idée s'il vois plait ?
0