Como fazer texto selecionado em JTextArea em uma String?

Estou trabalhando em um processador de texto simples com swing e layouts Java, e estou tentando descobrir como criar blocos de texto individuais em negrito, itálico ou diferentes tamanhos de fonte, em vez de todo o bloco de texto mudar de uma vez na minha JTextArea.

Existe alguma maneira de inicializar uma String como o usuário destaca o texto na JTextArea com o mouse? Eu adoraria se houvesse algum tipo de ActionListener ou algo para JTextArea que pudesse detectar tudo isso e facilmente salvar qualquer coisa como uma string, mas não tenho certeza se isso é possível. Algo assim seria ótimo:

String selectedtext;
JTextArea type;

class TextPanel extends JPanel implements ActionListener
{
    public TextPanel()
    {
        type = new JTextArea();
        type.addActionListener(this);
        this.add(type);
    }

    public void actionPerformed(ActionEvent e)
    {
        selectedtext = e.getSelected();
    }
}