Se può esserti d'aiuto, ho buttato giù qualche righetta di codice d'esempio (molto stupido come programmino, eh...):
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] );
}
}
}
Come si usa: lo compili normalmente e lo avvii in questo modo:
codice:
java Testo nomeFile
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 stesso
). Se il file di testo non è nella stessa directory dell'applicazione è necessario passargli tutto il percorso.
Ciao.