IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Agents de placement/Fenêtres Java Discussion :

Problème de relocalisation JList


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Inscrit en
    Décembre 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 2
    Par défaut Problème de relocalisation JList
    Bonjour j'ai créer une fenetre avec une JTextarea qui prend toute la fenetre.
    J'ai mit un écouteur sur le JTextArea avec un KeyListener pour que lors de chaque pression d'une touche une méthode soit lancé.
    Cette méthode c'est l'affichage d'une JList juste a coté du curseur de saisie qui contient une liste de mot.
    Pour les test j'ai créer une JList bidon que j'affiche a un certain endroit, et je veux qu'a chaque pression de touche cette liste ce mette à cotée de mon curseur pour proposer les mots à écrire. Le problème c'est que dans mon
    public void keyPressed(KeyEvent keyEvent) {
    je fais un list.setLocation(x, y); pour repositionner la liste, j'ai bien vérifier X et Y sont bien valide ! et non nul !
    J'ai tenté de faire un Repaint :
    list.repaint();
    mais cela ne change rien malheureusement !

    Avez vous des idées ? Désoler même si mon erreur peut être tout bête je ne suis malheureusement pas expert en java...

    Merci d'avance pour toute aide !

    Pour le code voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    import java.awt.*;
    import java.awt.event.ActionListener;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
    import java.awt.event.MouseEvent;
     
    import javax.swing.*;
     
    public class Fenetre extends JFrame{
     
        private JFrame f = new JFrame("This is a test");
        private Container content = f.getContentPane();
        private JTextArea textfield = new JTextArea();
    	private JList list;
    			public Fenetre(){
    			f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		    f.setSize(600, 600);
    		    content.setBackground(Color.white);
    		    content.setLayout(new FlowLayout()); 
    		    content.setSize(new Dimension(550,550));
    		    textfield.setPreferredSize(new Dimension(550,550));
                        textfield.setBackground(new Color(240,200,240));
     
    		    // début de création de la liste static pour le moment
    		      String name[] = {"Deepak", "Chandan Kumar Verma", "Sushil", "Raju", 
    		    		  "Santosh", "Amar", "Vinod"};
    		      DefaultListModel model = new DefaultListModel();
    		      for(int i = 0; i < name.length; i++)
    		        model.addElement(name[i]);
    		      list = new JList(model){
    		          public String getToolTipText(MouseEvent e) {
    		              int index = locationToIndex(e.getPoint());
    		              if (-1 < index) {
    		                String item = (String)getModel().getElementAt(index);
    		                return item;
    		              } else {
    		                return null;
    		              }
    		            }
    		          };
     
    		      list.setPrototypeCellValue("RoseIndia.net");
    		      int x = 120;
    		      int y = 50;
    		      list.setLocation(x,y);
    		      content.add(list);
    		      // end of it
     
    			textfield.addKeyListener(new BoutonListener());
    			content.add(textfield);
    		    f.setVisible(true);
     
    	}
        class BoutonListener implements KeyListener{ 
     
    	        public void keyPressed(KeyEvent keyEvent) {
    	          printIt("Pressed", keyEvent);
    	        }
     
    	        public void keyReleased(KeyEvent keyEvent) {
    	          //printIt("Released", keyEvent);
    	        }
     
    	        public void keyTyped(KeyEvent keyEvent) {
    	          //printIt("Typed", keyEvent);
    	        }
     
    	        private void printIt(String title, KeyEvent keyEvent) {
    	          System.out.println(textfield.getText());
    	          System.out.println("Position : "+textfield.getCaret().getMagicCaretPosition().getX()+" - "+textfield.getCaret().getMagicCaretPosition().getY());
    		      int x = (int)textfield.getCaret().getMagicCaretPosition().getX()+60;
    		      int y = (int)textfield.getCaret().getMagicCaretPosition().getY()+(int)list.getSize().getHeight()+20;
    		      System.out.println(x+" : "+y);
    	          list.setLocation(x, y);
    	          f.repaint();
    	        }
     
        }
     
    }

  2. #2
    Nouveau candidat au Club
    Inscrit en
    Décembre 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 2
    Par défaut ca marche mais ....
    Bon je viens de comprendre que cela fonctionne si par exemple je remplis la premiere ligne du textarea pleine de caractere et apres un retour chariot a la deuxieme ligne la liste suis bien le curseur de texte .....

    J'ai tester de forcer la taille du conteneur, du textarea pour etre sur mais aucune aide...

    Quelqu'un a une idée ?

  3. #3
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Je serais toi je mettrais plus la JList dans un JPopupMenu que tu affiches au dessus de ta JTextArea et que tu peux bouger sans problème via une setLocation

Discussions similaires

  1. Problème d'accessibilité JList
    Par Goupo dans le forum Langage
    Réponses: 3
    Dernier message: 08/06/2007, 15h18
  2. problème avec une Jlist
    Par vince351 dans le forum Composants
    Réponses: 5
    Dernier message: 22/05/2007, 15h46
  3. Réponses: 5
    Dernier message: 19/03/2007, 16h32
  4. Problème Paint() et jList
    Par lesafir dans le forum Composants
    Réponses: 2
    Dernier message: 27/02/2007, 14h55
  5. Problème avec les Jlist pour changer :)
    Par catwomanette dans le forum NetBeans
    Réponses: 4
    Dernier message: 04/01/2007, 10h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo