[RESOLVIDO] javax.print [ Não consigo fazer imprimir ]

Bom dia.
Eu estava procurando como imprimir uma JTextArea em uma impressora. E fui estuda sobre o [ javax.print ] , pesquisando bastante montei o código abaixo.
O problema é que parece estar tudo correto, não ocorre nenhum erro de Exception e a String da JTextArea não é imprimida.

Segue abaixo o código pra voces darem uma olhada. Gostaria da ajuda de voces para para encontrar o problema.

public class Imprimir extends javax.swing.JFrame {

    private static PrintService impressora;
    private String conteudo;
    
    public Imprimir() {
        initComponents();
    }

                            
    private void initComponents() {
// codigo omitido // * Mto Grande
        ); 
    }                        

    private void imprimirActionPerformed(java.awt.event.ActionEvent evt) {        // metodo do botao IMPRIMIR                                 
        // TODO add your handling code here:
        this.imprime(conteudo);
    }                                        
                               
                                                                        
        public void ProcuraImpressoras(String texto) {

        DefaultTableModel modtable = (DefaultTableModel) tabela.getModel();
        
        conteudo = texto;
        try {

            DocFlavor df = DocFlavor.SERVICE_FORMATTED.PRINTABLE;
            PrintService[] ps = PrintServiceLookup.lookupPrintServices(df, null);

            for (PrintService p : ps) {

                modtable.addRow(new Object[] { ( p.getName())  } );

            impressora = p ;
            p.createPrintJob () ;

        }

        } catch (Exception e) {

            JOptionPane.showMessageDialog(null,"Erro a detectar impressora! " + e, " Erro!",JOptionPane.ERROR_MESSAGE);

        }

}

public void imprime(String texto) {

        if (impressora == null)
        {
            JOptionPane.showMessageDialog(null,"Nenhuma impressora foi encontrada.", " Erro!",JOptionPane.ERROR_MESSAGE); 
        }
        else
        {
            try
            {

                DocPrintJob saida = impressora.createPrintJob(); // Gera saída para a impressora e salva na variavel 
                InputStream texto_convertido = new ByteArrayInputStream(texto.getBytes()); // Converte o texto para bytes e salva na variavel
                DocFlavor tipo = DocFlavor.INPUT_STREAM.AUTOSENSE; // Define o tipo do documento EX: PDF, TXT
                Doc doc = new SimpleDoc(texto_convertido, tipo, null);  // Converte e Carrega o documento ( documento em bytes , tipo do documento )
                saida.print(doc, null); // Envia o documento para impressao na saida da impressora criada
                JOptionPane.showMessageDialog(null,"Imprimindo...", " Ok!",JOptionPane.INFORMATION_MESSAGE); // avisa ao usuario que esta imprimindo

            }
            catch (PrintException e)
            {
                JOptionPane.showMessageDialog(null,"Erro ao imprimir! --> " + e, " Erro!",JOptionPane.ERROR_MESSAGE); // avis ao usuario se der erro na impressao
            }

        }

}

E na classe que chama esta esta assim.

Imprimir i = new Imprimir();
i.setVisible(true);
i.ProcuraImpressoras(texto.getText());

alguma dica? um empurrão ai ajudaria bastante =)

Bom… como nao tive sucesso em resposa aqui no forum tive que ir a luta e pesquisa , pesquisar .

Cheguei a solucao gracas a muita leitura e traducao do google shAUSHUA

segue ai o codigo pra quem tiver essa mesma duvida.

 private void imprimirActionPerformed(java.awt.event.ActionEvent evt) {                                         

        imprimir task = new imprimir();
        task.execute();
        
    }                                        

    private class imprimir extends SwingWorker<Object, Object> {
            
        protected Object doInBackground()
        {
            try
            {
                texto.print();
                JOptionPane.showMessageDialog(null, "Documento foi Impresso!" , "Sucesso", JOptionPane.INFORMATION_MESSAGE);
            } 
            catch (PrinterException e)
            {
                JOptionPane.showMessageDialog(null, "Erro ao imprimir = " + e, "Impressão", JOptionPane.ERROR_MESSAGE);
            } 
            catch (SecurityException e)
            {
                JOptionPane.showMessageDialog(null, "Erro de segurança = " + e, "Impressão", JOptionPane.ERROR_MESSAGE);
            }
            return null;
        }

    }