Apresentando páginas HTML em sua aplicação

Veja nesta dica um método para apresentar páginas HTML em sua aplicação.  Esta é uma simples extensão da classe JInternalFrame que contem uma lista de objetos.  Aqui os elementos da lista representam páginas HTML de um Web site qualquer.

import java.awt.*;
import java.io.*;
import java.awt.event.*;
import javax.swing.*;

public class PageFrame extends JInternalFrame implements ActionListener {
    
    SiteManager parent;
    String filename;
    JTextArea ta;
    
    public PageFrame(String name, SiteManager sm) {
        super("Página: " + name, true, true, true, true);
        parent = sm;
        setBounds(50,50,300,150);
        
        Container contentPane = getContentPane();
        
        // Cria um text area para apresentar o conteúdo armazenado no arquivo

        ta = new JTextArea();
        JScrollPane jsp = new JScrollPane(ta);
        contentPane.add(jsp, BorderLayout.CENTER);
        
        JMenuBar jmb = new JMenuBar();
        JMenu fileMenu = new JMenu("Arquivo");
        JMenuItem saveItem = new JMenuItem("Salvar");
        saveItem.addActionListener(this);
        fileMenu.add(saveItem);
        jmb.add(fileMenu);
        setJMenuBar(jmb);
        
        filename = name;
        loadContent();
    }
    
    public void actionPerformed(ActionEvent ae) {
        saveContent();
    }
    
    public void loadContent() {
        try {
            FileReader fr = new FileReader(filename);
            ta.read(fr, null);
            fr.close();
        catch (Exception e) {
          System.err.println("Nao é possével carregar a página: " + filename);
        }
    }
    
    public void saveContent() {
        try {
            FileWriter fw = new FileWriter(filename);
            ta.write(fw);
            fw.close();
        catch(Exception e) {
          System.err.println("Nao foi possível salvar a página: " + filename);
        }
    }
    
    public void cutText() { ta.cut(); }
    public void copyText() { ta.copy(); }
    public void pasteText() { ta.paste(); }
}