Trocar fonte da letra selecionada

E ai pessoal blz ?

Como vcs verao no codigo, eu fiz um JTextArea com JScrollPane … e tambem trocar a fonte da letra … so que eu nao consigo fazer com que troque apenas aquelas letras selecionadas pelo usuario … ou seja, eu só consegui fazer com que troque a fonte de todas as letras presentes no text area … alguem tem alguma ideia de como fazer trocar a fonte da letra, palavra selecionada ?

[code]
JPanel p1 = new JPanel();
JTextArea texto;
JPanel p2 = new JPanel();
JRadioButton plain, bold, italic, boldItalic;
ButtonGroup radioGroup;
Font plainFont, boldFont, italicFont, biFont;

public Observacoes() {
	
    JPanel painelCentral = new JPanel(new BorderLayout());
    JPanel painelInferior = new JPanel(new FlowLayout());
	
    TitledBorder titulo;
    titulo = BorderFactory.createTitledBorder(""); 

    JPanel painelRel = new JPanel();
    painelRel.setPreferredSize(new Dimension(900, 900));
    painelRel.setBorder(titulo);
    
	texto = new JTextArea(45, 70);
	
	texto.setLineWrap(true);
	texto.setWrapStyleWord(true);

	JScrollPane barra = new JScrollPane(texto); //Adiciona Scroll a TextArea
	barra.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
	
	p2.add(barra); //Adiciona a Scroll ao painel

    painelRel.add(p2);
    
    painelCentral.add(painelRel,BorderLayout.CENTER);
    
    painelCentral.add(painelInferior,BorderLayout.EAST);
    
    TitledBorder tituloBot;
    tituloBot = BorderFactory.createTitledBorder("Fontes");
    
    JPanel painelBotao = new JPanel();
    painelBotao.setPreferredSize(new Dimension(200, 200));
    painelBotao.setBorder(tituloBot);
    
    plain = new JRadioButton("Plain", true);
    painelBotao.add(plain);
    
    bold = new JRadioButton("Bold", false);
    painelBotao.add(bold);
    
    italic = new JRadioButton("Italic", false);
    painelBotao.add(italic);
    
    boldItalic = new JRadioButton("Bold/Italic", false);
    painelBotao.add(boldItalic);
    
    RadioButtonAction act = new RadioButtonAction();
    plain.addItemListener(act);
    bold.addItemListener(act);
    italic.addItemListener(act);
    boldItalic.addItemListener(act);
    
    radioGroup = new ButtonGroup();
    radioGroup.add(plain);
    radioGroup.add(bold);
    radioGroup.add(italic);
    radioGroup.add(boldItalic);
    
    plainFont = new Font("Serif", Font.PLAIN, 14);
    boldFont = new Font("Serif", Font.BOLD, 14);
    italicFont = new Font("Serif", Font.ITALIC, 14);
    biFont = new Font("Serif", Font.BOLD + Font.ITALIC, 14);
    texto.setFont(plainFont);
    
    painelInferior.add(painelBotao);

    p1.add(painelCentral);
	
}

private class RadioButtonAction implements ItemListener {
	public void itemStateChanged(ItemEvent e) {
		if(e.getSource() == plain)
			texto.setFont(plainFont);
		else if(e.getSource() == bold)
				texto.setFont(boldFont);
		else if(e.getSource() == italic)
				texto.setFont(italicFont);
		else if(e.getSource() == boldItalic)
				texto.setFont(biFont);
	}
}[/code]