¿Cómo convertir el texto seleccionado en JTextArea en una cadena?

Estoy trabajando en un simple procesador de textos con java swing y diseños, y estoy tratando de averiguar cómo hacer que los bloques individuales de texto estén en negrita, en cursiva o en diferentes tamaños de fuente en lugar de que todo el bloque de texto cambie a la vez en mi JTextArea.

¿Hay alguna forma de inicializar una cadena cuando el usuario resalta el texto en JTextArea con su mouse? Me encantaría si hubiera algún tipo de ActionListener o algo para JTextArea que pudiera detectar todo esto y guardar fácilmente cualquier cosa como una cadena, pero no estoy seguro de si esto es posible. Algo como esto sería genial:

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();
    }
}

Respuestas a la pregunta(5)

Su respuesta a la pregunta