OVH Cloud OVH Cloud

[newbie] JTextPane : voir une portion de texte en entier

1 réponse
Avatar
tsalm
Bonjour,

J'ai un JTextPane o=F9 je fais une recherche de mot =E0 la sauce Firefox
(occurence suivante, occurence precedente)
mais je n'arrive pas =E0 ce que ce mot soit completement cadr=E9 dans la
partie visible...
(=E7a donne la m=EAme ch=F4se qu'un :
setCaretPosition(posFin)
)

J'utilise la methode setCaretPosition que je place au d=E9but, puis =E0
la fin
Mais si le mot est =E0 droite de la vue, =E7a na fonctionne pas :(

Ma fonction avec le JTextPane jTxtIn :

public void select(int posDebut , int posFin) {
jTxtIn.setCaretPosition(posDebut);
jTxtIn.setCaretPosition(posFin);
}

D'avance merci
TSalm

1 réponse

Avatar
Raphael Tagliani
Essaye ça! Source maison... C'est bien ce que tu veux faire? Ce qui fait
la différence: JTextArea.

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.text.BadLocationException;
import javax.swing.text.DefaultHighlighter;

/**
* This pane searches for a word and displays it highlighted
* Source made to reply on a newsgroup - 2006
* @author glitch
*/
public class JSearchPane extends JPanel {
private static final long serialVersionUID = 1L;
private static String text = "This is a sample text for search. Click
on the" +
" 'Search' button to look for the second occurence of
'search'.nnnnnnnnnsearch";
protected JSearchPane(final String searchedWord)
{
final JTextArea jta = new JTextArea();
jta.setText(text);

JButton jb = new JButton("Search");
jb.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
int start = text.lastIndexOf(searchedWord);
assert(start > -1);
int stop = start + searchedWord.length();
System.out.println("Start: "+start+" stop: "+stop);
try {
jta.getHighlighter().addHighlight(start, stop,
DefaultHighlighter.DefaultPainter);
} catch (BadLocationException e1) {
e1.printStackTrace();
}
jta.setCaretPosition(start);
}
});

this.setLayout(new BorderLayout());
this.add(new JScrollPane(jta));
this.add(jb, BorderLayout.SOUTH);
}
public static void main(String[] args) {
JFrame jf = new JFrame("JSearchPane");
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.add(new JSearchPane("search"));
jf.setBounds(50, 50, 200, 200);
jf.setVisible(true);
}
}


tsalm wrote:
Bonjour,

J'ai un JTextPane où je fais une recherche de mot à la sauce Firefox
(occurence suivante, occurence precedente)
mais je n'arrive pas à ce que ce mot soit completement cadré dans la
partie visible...
(ça donne la même chôse qu'un :
setCaretPosition(posFin)
)

J'utilise la methode setCaretPosition que je place au début, puis à
la fin
Mais si le mot est à droite de la vue, ça na fonctionne pas :(

Ma fonction avec le JTextPane jTxtIn :

public void select(int posDebut , int posFin) {
jTxtIn.setCaretPosition(posDebut);
jTxtIn.setCaretPosition(posFin);
}

D'avance merci
TSalm