2015-12-31 4 views
0

Je souhaite que mon JTextPane dispose de certaines fonctionnalités lorsque l'utilisateur appuie sur Entrez et ne modifiez pas simplement la ligne. Maintenant, je comprends comment implémenter la fonctionnalité que je veux, mais je ne peux toujours pas annuler le saut de ligne en appuyant sur Entrez. J'ai essayé le suivant mais cela ne semble pas fonctionner, la nouvelle ligne sera créée quand même. Pour donner une meilleure idée de ce que j'essaie de réaliser ici, le panneau de texte est censé contenir un certain chemin de fichier, donc je veux que l'utilisateur puisse seulement défiler horizontalement et ne pas ajouter de nouvelles lignes verticalement. Le composant JTextPane est-il adapté à cette utilisation?Arrêt d'un JTextPane de la réception de nouveaux flux de ligne

locationPane = new JTextPane(); 
    locationPane.addKeyListener(new KeyAdapter() { 
     @Override 
     public void keyPressed(KeyEvent arg0) { 
      if(arg0.getExtendedKeyCode() == KeyEvent.VK_ENTER){ 
       locationPane.setText(locationPane.getText().substring(0, locationPane.getText().length())); 
      } 
     } 
    }); 

Répondre

2

le textPane est censé contenir une certaine filepath, donc je veux que l'utilisateur d'être en mesure de faire défiler et non seulement horizontalement ajouter de nouvelles lignes verticaly. Le composant JTextPane est-il adapté à cette utilisation?

Je dirais qu'il y a de meilleures options. Si vous n'avez qu'une seule ligne de texte, utilisez simplement JTextField. Pour gérer la touche Entrée, vous pouvez ajouter un ActionListener au champ de texte.

Si vous avez besoin de plusieurs lignes alors je vous suggère d'utiliser un JList.

+0

Merci d'utiliser un JTextField résolu le problème. –

3

KeyListener n'est jamais une solution appropriée pour les composants de texte. Au lieu de cela, vous devez utiliser un DocumentFilter pour filtrer les éléments que vous ne voulez pas ajouter au sous-jacente Document.

Voir Implementing a Document Filter et DocumentFilter Examples pour plus de détails

Vous pouvez également modifier la liaison clé insert-break, la modification du comportement ou de prendre des mesures supplémentaires.

Voir this example pour plus de détails