Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Inserire dei tag di formattazzione all'interno di un jEditorPane

    'giorno... avrei bisogno di una mano per inserire la formattazzione all'interno di un jEditorPane... il problema è questo:

    codice:
    private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {                                      
    
        jEditorPane1.replaceSelection(""+jEditorPane1.getSelectedText()+"");
        System.out.print(jEditorPane1.getText());
    }
    questo codice dovrebbe far diventare grassetto il pezzo di stringa selezionata (il jEditorPane come ContentType è stato settato su "text/html") il problema è che, eseguendo il codice, tutto ciò che appare è:

    ciao come va? (ciò che appare nel jEditorPane)


    cia<b>o co</b>me va? (ciò che viene scritto con "System.out.print(jEditorPane1.getText());" )

    qualcuno ha un consiglio per inserire dei tag di formattazzione fra una stringa??
    sono abbastanza disperato

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Inserire dei tag di formattazzione all'interno di un jEditorPane

    Originariamente inviato da TheWarLord
    qualcuno ha un consiglio per inserire dei tag di formattazzione fra una stringa??
    La questione non è così semplice .... conosci come funziona internamente un HTMLDocument (in generale un StyledDocument)??
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    se intendi il codice html...si lo conosco...quindi come posso fare per mettere quei tag?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da TheWarLord
    se intendi il codice html...
    No ... io intendo dire come è "modellato" internamente uno StyledDocument, i suoi Element, i due tipi di elementi "branch" e "leaf", la questione degli attributi (AttributeSet).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    non ne ho idea ...ma... cosa centra?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da TheWarLord
    non ne ho idea ...ma... cosa centra?
    Centra.

    codice:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.text.*;
    import javax.swing.text.html.*;
    
    public class TestFrame extends JFrame {
        private JEditorPane editorPane;
    
        public TestFrame() {
            super("Test");
    
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setSize(400, 300);
    
            editorPane = new JEditorPane("text/html", "<html><body>
    
    prova di testo <big>html</big></p></body></html>");
            JScrollPane scrollPane = new JScrollPane(editorPane);
    
            JButton insertButton = new JButton("Sostituisci selezione");
    
            insertButton.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    String nuovoTesto = JOptionPane.showInputDialog(TestFrame.this, "Inserisci nuovo testo");
    
                    int start = editorPane.getSelectionStart();
                    int end = editorPane.getSelectionEnd();
    
                    SimpleAttributeSet attr = new SimpleAttributeSet();
                    StyleConstants.setForeground(attr, Color.RED);
                    StyleConstants.setItalic(attr, true);
                    StyleConstants.setBold(attr, true);
    
                    try {
                        HTMLDocument htmlDoc = (HTMLDocument) editorPane.getDocument();
                        htmlDoc.replace(start, end-start, nuovoTesto, null);
                        htmlDoc.setCharacterAttributes(start, nuovoTesto.length(), attr, false);
                    } catch (BadLocationException ex) {
                        // Non dovrebbe succedere.
                    }
                }
            });
    
            getContentPane().add(scrollPane, BorderLayout.CENTER);
            getContentPane().add(insertButton, BorderLayout.SOUTH);
        }
    
        public static void main(String[] args) {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    new TestFrame().setVisible(true);
                }
            });
        }
    }
    Seleziona del testo, clicca sul pulsante, inserisci del testo e questo testo sostituirà la selezione e verrà messo come rosso/italico/grassetto (i set degli attributi mi sembrano chiari, no?).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Se l'hai fatto fra una risposta e l'altra sei un grande O.O

    EDIT--------------------------------------------------

    a proposito, grazie mille, elaborando un pò il tuo sorgente
    son riuscito a fare in modo di rendere il programma un editor di
    testo molto simile a word (solo per la formattazzione XD)

  8. #8
    e se volessi fare un toggle della proprietá BOLD sul testo selezionato??
    ....ma i computer non sono tanto macchine quanto strumenti di ampliamento della mente ed un diverso tipo di mezzo espressivo.
    -- Chi si accontenta non gode si illude --

  9. #9
    TheWarLord potresti aiutarmi?
    non riesco ad andare avanti, google non mi aiuta!
    ....ma i computer non sono tanto macchine quanto strumenti di ampliamento della mente ed un diverso tipo di mezzo espressivo.
    -- Chi si accontenta non gode si illude --

  10. #10
    Scusami ma non saprei proprio cosa dirti... questa applicazione era un progetto che avevo in mente di sviluppare oltre un anno fa e da quel momento ho deciso di passare al .NET Framework che mi sembrava più comodo... quindi a meno che qualcun'altro non abbia una risposta per te, io non so cosa dirti.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.