Gerar e abrir arquivo .RTF

Olá pessoal.

Alguns já sabem que estou trabalhando numa aplicação para uma certa empresa de SP. Talvez esse projeto seja integrado com o sistema de publicção de noticias online de lá, e estou no caminho de fazer um bom trabalho, com a ajuda de voces, é claro. Aprendi muitas coisas aqui com exemplos e dicas, e agradeço a todos.

Um dos moderadores me passou uma classe que gera e le arquivos txt, e a minha aplicação está funcionando perfeitamente com ela.

Mas fiquei empolgado com a ideia de gerar arquivos rtf, pois é possível salvar também a formatação do texto. Depois vou aprender a como formatar o texto também (bold e italic, necessariamente), é claro. Mas o principal, por enquanto, é salvar e abrir.

É possivel criar uma classe correspondende à seguinte, que gera arquivo texto, que gere um arquivo rtf?

Que classes devo pesquisar? (acho que IRepor e uma outra que esqueço o nome não me servem).

Segue a classe que gera txt:

[code]import java.io.File;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import javax.swing.JFileChooser;
//import javax.swing.filechooser.FileFilter;

public class Arquivo {
//A classe JFileChooser é a versão Swing da FileDialog
private JFileChooser fileChooser = new JFileChooser();
//filtro = new ExtensionFileFilter();

File file;

public boolean salvar(String texto){
    if (file == null)
        return salvarComo(texto);

    //Criamos um PrintWriter, para escrever no arquivo.
    PrintWriter pw = null;
    try {
        //Escrevemos no arquivo.
        pw = new PrintWriter(file);
        pw.println(texto);
    } catch (Exception e) {
        e.printStackTrace();
        return false;
    } finally {
        //Fechamos o arquivo.
        if (pw != null) {
            pw.close();
        }
      return true;
    }
}


public boolean salvarComo(String texto) {
    //Mostramos a caixe de save. O método retorna APPROVE_OPTION caso o usuário tenha pressionado o ok
    //Portanto, se não retornar isso, saímos do método (ele pressionou cancel ou fechou a caixa sem selecionar arquivo nenhum).
    if (fileChooser.showSaveDialog(null) != JFileChooser.APPROVE_OPTION) {
        return false;
    }

    //Obtemos o arquivo selecionado pelo usuário
    file = fileChooser.getSelectedFile();

    if(!(file.getName().endsWith(".txt"))){

    }

    System.out.println(file);

    //Criamos um PrintWriter, para escrever no arquivo.
    PrintWriter pw = null;
    try {
        //Escrevemos no arquivo.
        pw = new PrintWriter(file);
        pw.println(texto);
    } catch (Exception e) {
        e.printStackTrace();
        return false;
    } finally {
        //Fechamos o arquivo.
        if (pw != null) {
            pw.close();
        }
      return true;
    }
}



public List<String> abrir() {
//Mesmo esquema do método acima, mas agora usamos a caixa de abrir arquivo.
if (fileChooser.showOpenDialog(null) != JFileChooser.APPROVE_OPTION) {
    return new ArrayList<String>();
}

//fileChooser.addChoosableFileFilter(filter);

file = fileChooser.getSelectedFile();
//Criamos a lista que conterá as linhas lidas do arquivo.
List<String> linhas = new ArrayList<String>();

//Criamos um scanner, para ler do arquivo.
Scanner scan = null;
try {
    scan = new Scanner(file);
    //Enquanto o arquivo tiver linhas
    while (scan.hasNextLine()) {
        //Lemos a linha
        linhas.add(scan.nextLine());
    }
} catch (Exception e) {
    e.printStackTrace();
} finally {
    //Fechamos o arquivo
    if (scan != null) {
        scan.close();
    }
}
//Retornamos o texto lido.
return linhas;

}

public static void main (String[] args){
    Arquivo arquivo = new Arquivo();

    System.out.println(arquivo.abrir());
}

}
[/code]

Não achei exemplos no google que me dessem uma luz.

Obrigado a todos.

Sinceramente não entendi muito bem sua dúvida.
Vc quer ler e salvar um arquivo .rtf, mas vc já tem essa funcionalidade na classe que apresentou. Um .rtf é um arquivo de texto com formatação rtf então basicamente não haveria problema algum em usar um PrintWriter para salvar o arquivo.
Agora, se você quer um componente para editar o arquivo lido e que vai ser gravado a história é outra.

Você pode começar dando uma olhada nos pacote javax.swing.text.rtf e javax.swing.text e dando uma pesquisada no google por swing rtf