Ciao a tutti
Visto che l'oggetto JEditorPane interpreta il codice html, c'è un modo per far interpretare a questo oggetto il codice html che l'utente stà scrivendo in real-time(ovvero proprio quando l'utente lo stà scrivendo)???
Grazie a tutti
Ciao a tutti
Visto che l'oggetto JEditorPane interpreta il codice html, c'è un modo per far interpretare a questo oggetto il codice html che l'utente stà scrivendo in real-time(ovvero proprio quando l'utente lo stà scrivendo)???
Grazie a tutti
Avevo cominciato a suo tempo un piccolo editor, poi per motivi vari ho abbandonato tutto. Non ho più tutto il codice che avevo scritto, ma questo va. La parte superiore è il JEditorPane mentre il pannello inferiore è una JTextArea. Il codice è così semplice che si spiega da sé.
codice:import javax.swing.*; import javax.swing.event.*; import java.awt.*; public class htmlEditor extends JFrame { private class myDocumentListener implements DocumentListener { public void changedUpdate(DocumentEvent de) { editorPane.setText(codePane.getText()); } public void insertUpdate(DocumentEvent de) { editorPane.setText(codePane.getText());; } public void removeUpdate(DocumentEvent de) { editorPane.setText(codePane.getText()); } } private JEditorPane editorPane; private JTextArea codePane; public htmlEditor() { super("HTML Editor "); this.setSize(600,600); this.getContentPane().setLayout(new GridLayout(2,1)); editorPane = new JEditorPane(); editorPane.setEditable(false); editorPane.setContentType("text/html"); codePane = new JTextArea(); JScrollPane upperScroll = new JScrollPane(editorPane); JScrollPane lowerScroll = new JScrollPane(codePane); DocumentListener documentListener = new myDocumentListener(); codePane.getDocument().addDocumentListener(documentListener); this.getContentPane().add(upperScroll); this.getContentPane().add(lowerScroll); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main (String[] args) { htmlEditor he = new htmlEditor(); } }
<´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
"The answer to your question is: welcome to tomorrow"
Perfetto andrea ti ringrazio tantissimo!
Un ultima cosa sempre sui JEditorPane, ho visto che i link non funzionano, come si potrebbe fare?
Grazie ancora
Come al punto 2
http://www.apl.jhu.edu/~hall/java/Sw...ditorPane.html
<´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
"The answer to your question is: welcome to tomorrow"
A occhio e croce comuqnue misembra molto inefficiente perche provoca ilricaricamento del testo dell'editorpane ognivolta chel'utente inserisce anche solo un caratterenell'area di testo...con documenti medio grandi di certo l'editorpane ci mette un po a rifare il parsing di tutto
Sun Certified Java Programmer
EUCIP Core Level Certified
European Certification of Informatics Professionals
Niente di più vero. La cosa migliore sarebbe stata effettuare l'aggiornamento solo alla chiusura del tag correntemente editato...Originariamente inviato da anx721
A occhio e croce comuqnue misembra molto inefficiente perche provoca ilricaricamento del testo dell'editorpane ognivolta chel'utente inserisce anche solo un caratterenell'area di testo...con documenti medio grandi di certo l'editorpane ci mette un po a rifare il parsing di tutto
<´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
"The answer to your question is: welcome to tomorrow"
perfetto, grazie mille a tutti
E se però si volesse fare tutto in unica area di testo, ma usando una codifica propria?
Volevo sapere se è possibile...
In pratica devo creare una finestra con area di testo che riconoscendo un linguaggio predefinito assegna alle diverse parole del linguaggio un colore diverso, e magari anche sostituisce la vera e propria parola nel testo con un'icona... tutto mentre si scrive a mano nell'area di testo.
E' possibile?
Non ho però moltissimo tempo, devo quindi trovare una soluzione magari un pò veloce che sia un buon compromesso...
Oppure anche mettendo una sorta di piccola area di testo con associato un pulsante "insert" sotto la visualizzazione del testo intero stilizzato secondo il linguaggio... una cosa tipo lo stile delle chat...
Voi che soluzione adattereste?
Mmmm nessuno ha idee?