1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
|
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
/**
*
* @author kick54
*/
public class PanneauPrincipal extends JPanel {
public PanneauPrincipal() {
JTextArea jta = new JTextArea(5,30);
JScrollPane jsp = new JScrollPane(jta) ;
jta.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
System.out.println("Caret (character position) : " + jta.getCaretPosition()) ;
jsp.getVerticalScrollBar().setValue( f(jta) );
}
@Override
public void mousePressed(MouseEvent e) {
// nop
}
@Override
public void mouseReleased(MouseEvent e) {
// nop
}
@Override
public void mouseEntered(MouseEvent e) {
// nop
}
@Override
public void mouseExited(MouseEvent e) {
// nop
}
});
initText(jta) ;
JButton jb = new JButton("Jump");
jb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
jsp.getVerticalScrollBar().setValue(100);
// jsp.repaint();
}
});
this.add(jsp) ;
this.add(jb) ;
}
/**
* f() prend encompte la position curseur dans le texte,
* puis calcule le numéro de ligne dans le text
* et la position pixel en fonction de la taille des caractères du textArea
*
*/
private int f(JTextArea jta){
int ordonnee = jta.getCaretPosition() ;
/**
* A compléter
*/
return 110 ;
}
private void initText(JTextArea jta){
jta.setText("Bonjour.\n"
+ "J'airais aimé connaitre la différence (au niveau de leur utilité)"
+ " entre les méthodes scrollRectToVisible et "
+ "setViewPosition sur un objet JScrollPane.\n" +
"\n" +
"Je cherche à faire défiler automatiquement les contenu "
+ "d'un JScrollPane: dans mon JScrollPane, une liste "
+ "qui peut être suffisamment longue pour ne pas entrer "
+ "entièrement dans ma fenêtre sans ascenseur. Ce que je "
+ "cherche à faire c'est que, par exemple, quand on clique "
+ "sur un élément du milieu de la liste, l'ascenseur vertical "
+ "bouge puis se positionne automatiquement au milieu.\n" +
"\n" +
"J'ai donc essayé avec les deux méthodes suscitées, "
+ "mais ça ne marche pas comme je le voudrais, surtout "
+ "scrollRectToVisible avec laquelle je n'arrive même "
+ "pas à modifier, de manière statique, la partie visible de la vue...\n" +
"\n" +
"D'autres précision sur demande.\n" +
"\n" +
"Merci par avance. "+ "J'airais aimé connaitre la différence (au niveau de leur utilité)"
+ " entre les méthodes scrollRectToVisible et "
+ "setViewPosition sur un objet JScrollPane.\n" +
"\n" +
"Je cherche à faire défiler automatiquement les contenu "
+ "d'un JScrollPane: dans mon JScrollPane, une liste "
+ "qui peut être suffisamment longue pour ne pas entrer "
+ "entièrement dans ma fenêtre sans ascenseur. Ce que je "
+ "cherche à faire c'est que, par exemple, quand on clique "
+ "sur un élément du milieu de la liste, l'ascenseur vertical "
+ "bouge puis se positionne automatiquement au milieu.\n" +
"\n" +
"J'ai donc essayé avec les deux méthodes suscitées, "
+ "mais ça ne marche pas comme je le voudrais, surtout "
+ "scrollRectToVisible avec laquelle je n'arrive même "
+ "pas à modifier, de manière statique, la partie visible de la vue...\n" +
"\n" +
"D'autres précision sur demande.\n" +
"\n" +
"Merci par avance. "
);
}
} |
Partager