J'essaie de créer un éditeur WYSIWYG simple qui permettra aux utilisateurs de sélectionner le texte et gras/souligner/italique le. À l'heure actuelle, l'utilisateur peut sélectionner du texte, faites un clic droit dessus et sélectionnez gras à partir d'un menu contextuel qui finit par appliquer le style gras au texte sélectionné comme ceci:Comment obtenir le style du texte sélectionné dans un JTextPane?
this.getStyledDocument().setCharacterAttributes(this.getSelectionStart(), this.getSelectionEnd()-this.getSelectionStart(), boldStyle, false);
Le style audacieux est configuré comme ceci:
boldStyle = this.addStyle("Bold", null);
StyleConstants.setBold(boldStyle, true);
ce que je voudrais savoir, est s'il est possible d'obtenir le style du texte sélectionné, de sorte que si un utilisateur tente de « gras » du texte qui est déjà gras, je peux détecter et écrire du code pour ne pas mettre en gras ce texte au lieu de simplement appliquer à nouveau le style gras?
Quelque chose comme:
if(!this.getStyledDocument().getStyleForSelection(this.getSelectionStart(), this.getSelectionEnd()-this.getSelectionStart()).isBold()){
//do bold
}
else{
//un-bold
}
serait un rêve devenu réalité, mais je n'ai pas d'espoir pour cela. Ce que j'espère de façon réaliste, c'est soit qu'on me dise que je me trompe et que l'on me montre «le chemin», soit que je me dirige vers une méthode de ronde-par-bout pour y parvenir.
Merci beaucoup pour votre temps.
+1: Vous pouvez également consulter les autres options de StyledEditorKit. Il pourrait être utile pour d'autres aspects de votre éditeur WYSIWYG – akf
Merci beaucoup pour cela. Encore une fois, la bonne solution était si simple! J'ai supprimé addActionCommand et addActionListener de mes éléments de menu contextuel et utilisé "bold.addActionListener (new StyledEditorKit.BoldAction())", qui a fonctionné parfaitement. Merci encore! –