J'ai un jtextpane déclaré comme suit:
public void appendChatText(String text) { try { doc.insertString(doc.getLength(), text, null); box.setAutoscrolls(true); box.setCaretPosition(box.getDocument().getLength()); } catch(BadLocationException e) { e.printStackTrace(); } }
5 Réponses :
Ajouter Mouselistener em> au texte que vous souhaitez cliquer et effectuer une action appropriée. P>
Je pense que c'est la classe "Joptionpane" que vous voulez Il devrait vous donner des boutons d'option à choisir par exemple :( "OK" / "Annuler") P>
J'ai également réussi à obtenir facilement le jtextpane pour afficher des images et des composants si nécessaire ... Je veux qu'il imprime un message qui dit quelque chose comme, "Fichier téléchargé sur le serveur. Accepter déclin EM>" P> " blockQuote>
Pourquoi ne pas ajouter de boutons pour "accepter" et "décliner"? p>
Sinon, vous pouvez utiliser un Jeditorpane pour afficher HTML. Ensuite, vous pourriez ajouter un hyperlinklistener au texte "Accepter" et "décliner". Lisez l'API de Jeditorpane pour un exemple. L'hyperlinklistener s'attend à une URL lorsque vous cliquez sur le texte, mais je ne pense pas qu'il n'y ait aucune raison de ne pas être une chaîne. P>
Merci, je vais essayer cela quand j'ai le temps dans quelques jours. Si le problème est résolu, je vais accepter la réponse. Personnalité Essayant d'éviter d'utiliser des boutons pour le garder soigné et propre, un hyperlinklistener sonne comme la route que je prendrai. :)
J'ai fini par résoudre celui-ci avec un mouselisteneur et une classe extension de l'ATBSBRACTION. J'ai ajouté le texte que je voulais être un lien cliquable vers le jtextpane comme suit:
class ChatLinkListener extends AbstractAction { private String textLink; ChatLinkListener(String textLink) { this.textLink = textLink; } protected void execute() { if("accept".equals(url)) { //execute code } else if("decline".equals(url)) { //execute code } } public void actionPerformed(ActionEvent e) { execute(); } }
Si vous n'aimez pas utiliser les boutons, utilisez un jlabel.
Si vous utilisez un JTextpane, vous pouvez utiliser la méthode InserComponent () pour insérer un nouveau jlabel qui est de la même police que la police JTextpane et vous Peut personnaliser le jlabel comme vous le souhaitez, comme définir le curseur sur le curseur de la main, donnez-le ainsi un aspect et une sensation cliquable. P>
JLabel l=new JLabel("Click me"); l.setFont(textPane.getFont()); l.setCursor(new Cursor(Cursor.HAND_CURSOR)); l.addMouseListener(new MouseAdapter(){ public void mouseClicked(MouseEvent me) { // your code } }); textPane.insertComponent(l);