Comment rendre le texte sélectionné dans le JTextArea dans une Chaîne de caractères?
Je suis en train de travailler sur un traitement de texte simple avec java swing et mises en page, et j'essaie de comprendre comment faire des blocs de texte en gras, italique, ou des tailles de police différentes, au lieu de l'ensemble du bloc de texte en modifiant à la fois dans mon JTextArea.
Est-il un moyen d'initialiser une Chaîne de caractères que l'utilisateur met en évidence le texte dans le JTextArea avec la souris? J'aimerais si il y avait une sorte de ActionListener ou quelque chose pour JTextArea qui peut détecter tout cela et facilement enregistrer quoi que ce soit comme une chaîne de caractères, mais je ne suis pas sûr si cela est possible. Quelque chose comme ce serait génial:
String selectedtext;
JTextArea type;
class TextPanel extends JPanel implements ActionListener
{
public TextPanel()
{
type = new JTextArea();
type.addActionListener(this);
this.add(type);
}
public void actionPerformed(ActionEvent e)
{
selectedtext = e.getSelected();
}
}
- Je me rends compte que ma réponse est plus orienté vers votre objectif final et non pas la question, désolé.
- Ne soyez pas désolé, j'ai effectivement changé toutes mes
JTextArea
s àJTextPane
s avant même que j'ai vu votre commentaire et je suis d'apprendre à utiliser les Attributs et les Styles maintenant. Merci de me donner les informations de base pourJTextPane
s dans votre réponse 😀
Vous devez vous connecter pour publier un commentaire.
JTextArea ne dispose pas d'une fonctionnalité intégrée qui va le faire, mais:
Pour quelqu'un pour sélectionner du texte, ils ont qu'à cliquer sur la zone de texte, faites glisser et relâchez le clic. Oui, joindre un MouseListener et de mettre en œuvre la mouseReleased méthode pour vérifier si un texte est sélectionné, et le cas échéant, de l'enregistrer comme une chaîne de caractères:
Vous n'allez pas être en mesure d'accomplir ceci avec un
JTextArea
, vous aurez besoin de quelque chose qui prend en charge riches d'affichage de texte comme unJTextPanel
, et vous aurez besoin de définir des styles pour elle, l'application de ces styles à des régions spécifiques.Ici est un exemple d'une classe utilitaire pour créé des styles (lié à donner l'exemple de la définition des styles). Le
addNewStyle
etchangeFont
sont les deux principales méthodes de référence. LeaddNewStyle
méthode montre comment ajouter un style prédéfini au document que vous pouvez y faire référence lors de l'insertion (surtout pour le collage si vous voulez passé avec un format). LechangeFont
méthode montre comment créer un style et de l'appliquer à une région (dans la méthode de la région est de0
à la fin du document - de sorte que l'ensemble du document).Vous aurez probablement besoin de ces styles à être conçu de façon dynamique, de sorte que vous aurez besoin de chercher à partir de la région s'il en existe (que je n'ai pas fait). Tout cela est fait avec un
StyledDocument
Et l'exemple de l'ajout de texte avec un style à un
StyledDocument
(purement par exemple) est:Il a été un certain temps depuis que j'ai travaillé avec
JTextPane
s etStyledDocuments
de sorte que la plupart de ceci est tiré du projet où j'ai fait le travail. Je souhaite que je pourrais vous donner plus d'informations plutôt que juste un point de départ.Vous pouvez utiliser JTextComponent#setCaretPosition suivie par JTextComponent#moveCaretPosition pour mettre en évidence/sélectionnez
Pour la détection des changements de la sélection dans JTextArea, il serait mieux si vous utilisez de la CaretListener.
Maintenant, si vous voulez faire des opérations avec le texte sélectionné lorsque la souris est déplacée, vous pourriez le faire, parce que le selectedText est mis à jour.
JTextArea n'ont pas cette capacité. Vous devriez regarder
JEditorPane
Il peut afficher du html , vous pouvez utiliser les caractères gras les balises et tout ce dont vous avez besoin.
JEditorPane
est ce que l'OP a été à la recherche pour le bien.how to make individual blocks of text bold, italics, or different font sizes instead of the whole block of text
, s'il vous plaît plus voir dans Oracle tutorielJEditorPane
qui est un simple processeur HTML. @mKorbel, je suis tout à fait conscient que vous ne devez pas avoir prêté attention à ma réponse.