Se può esserti d'aiuto, ho buttato giù qualche righetta di codice d'esempio (molto stupido come programmino, eh...):
Come si usa: lo compili normalmente e lo avvii in questo modo:codice:import java.io.*; import java.awt.*; import javax.swing.*; import java.awt.event.*; import javax.swing.text.*; public class Testo extends JFrame { private BufferedReader br; private JTextPane jtp; private JScrollPane jsp; private Container c; private StyledDocument doc; public Testo(String file) { c = getContentPane(); c.setLayout( new BorderLayout() ); jtp = new JTextPane(); jsp = new JScrollPane( jtp ); creaStili( jtp.getStyledDocument() ); doc = jtp.getStyledDocument(); c.add(jsp, BorderLayout.CENTER); caricaFile(file); setDefaultCloseOperation( EXIT_ON_CLOSE ); setSize(800, 600); setResizable( false ); setTitle("Guarda la casa"); setVisible( true ); } private void caricaFile(String file) { try { br = new BufferedReader( new InputStreamReader( new FileInputStream(file) ) ); String linea = ""; while((linea = br.readLine()) != null) { printaTesto( linea ); } br.close(); } catch (Exception e) { e.printStackTrace(); } } private void printaTesto(String linea) throws Exception { String[] tokens = linea.split(" "); String prima = ""; String dopo = ""; String content = ""; int pos = 0; for(int id=0; id<tokens.length; id++) { if ( tokens[id].toLowerCase().indexOf("casa") >= 0 ) { pos = tokens[id].toLowerCase().indexOf("casa"); prima = tokens[id].substring(0,pos); dopo = tokens[id].substring(pos+4,tokens[id].length()); content = tokens[id].substring(pos, pos+4); doc.insertString(doc.getLength(), prima, doc.getStyle("normale")); doc.insertString(doc.getLength(), content, doc.getStyle("casa")); doc.insertString(doc.getLength(), dopo, doc.getStyle("normale")); } else { doc.insertString(doc.getLength(), tokens[id], doc.getStyle("normale")); } doc.insertString(doc.getLength(), " ", doc.getStyle("normale")); } doc.insertString(doc.getLength(), "\n", doc.getStyle("normale")); } private void creaStili(StyledDocument sd) { Style deflt = StyleContext.getDefaultStyleContext().getStyle(StyleContext.DEFAULT_STYLE); // Stile normale Style normale = sd.addStyle("normale", deflt); StyleConstants.setFontFamily(deflt, "Arial"); StyleConstants.setForeground(deflt, Color.black); StyleConstants.setFontSize(deflt, 12); // Stile "casa" Style s = sd.addStyle("casa", normale); StyleConstants.setItalic(s, true); StyleConstants.setUnderline(s, true); StyleConstants.setForeground(s, Color.blue); StyleConstants.setFontSize(s, 11); } public static void main(String [] args) { if (args.length > 0) { Testo t = new Testo( args[0] ); } } }
dove nomeFile è il nome di un file di testo qualsiasi. Per vederne gli effetti è necessario che il file di testo contenga al suo interno la parola casa (una o più volte, non necessariamente tutta in minuscolo; il file più comodo è il sorgente stessocodice:java Testo nomeFile). Se il file di testo non è nella stessa directory dell'applicazione è necessario passargli tutto il percorso.
Ciao.![]()


). Se il file di testo non è nella stessa directory dell'applicazione è necessario passargli tutto il percorso.

Rispondi quotando