Colorizador de texto em Java (Resolvido)

Olá pessoal,

Sou novo por aqui, é a primeira linguagem de programação que estou aprendendo (já domino as de marcação: Html, CSS…)
Após 3 dias lendo e fazendo apps simples, comecei a fazer uns apps gráficos p ganhar experiência…

Bem, hoje surgiu a necessidade de criar um app qu faça o seguinte:
Eu quero escrever um app que pegue a String de um jTextField e adicione um código de cor (#AA44AA, por xemplo) para cada caracter.
O objetivo é esccrever um texto em gradiente, por exemplo:

se eu escrevo “Amigos!” no jTextField1

ao clicar no jButton1 ele retorna “#556677A#667788m#778899i#8899AAg#99AABBo#AABBCCs#BBCCDD!” no jTextField2

Destaquei as letras que seriam coloridas para que ficasse legível…

Importante: não quero um código pronto, preciso que me ajudem a compreender como posso fazer isso…

[]'s

Se entendi… você quer um JTextField com uma cor diferente para cada caracter do seu texto…
.
Com JTextField isso não é possível, pois ele trabalha com um tipo de cor para todo o texto… ou seja se você setar uma cor diferente usando o método “setForeground(new Color(255,0,0))” todo o texto mudara para a cor Vermelha…
.
O jeito é trabalhar com um tipo de componente que aceite estilos… como JEditPane ou JTextPane e fazer ele se comportar como um JTextField…
.
Não é tão fácil como trabalhar com um JTextField, mas assim poderia setar cores diferente para cada letra do texto.
.
Como usar JEditorPane e JTextPane veja…
http://download.oracle.com/javase/tutorial/uiswing/components/editorpane.html

Para complementar veja…
http://download.oracle.com/javase/tutorial/uiswing/components/generaltext.html

Não se trata disso, Franciso… (obrigado por estar ajudando)

Eu quero o código das cores em texto antes de cada caracter mesmo!

Pois o usuário do programa vai copiar o código com os valores hexa e colar num sistema de chat que temos…

Eu n quero que o texto apareça colorido no app…

se eu escrever “a”

quero que retorne “#445566a

No caso do gradiente que citei, gostaria de predefinir a ordem das cores em hexa antes de cada caracter…

Desculpe não tinha lido direito…
.
Vamos la… Nesse caso você pode recuperar a String do JTextField e num for pegar a seqüencia das letras do texto com o método “charAt(index)” e concatenar ao final de cada String de código de cor em hexa… depois concatena todas as Strings de código de cor em hexa em uma unica String e seta no JTextField2…
.
Na ordem das cores, poderia usar uma ArrayList para armazenar as Strings dos códigos de cor hexa na ordem que deseja… e recuperar seqüencialmente pelo index na hora concater com as letras…
.
Devera também usar uma condição para verificar se esta no ultimo index da ArrayList e por exemplo, voltar para o primeiro index e repedir novamente a ordem das cores… isso conforme a necessidade.

Obrigado pela ajuda Francisco!!!

Funcionou! Não criei um array porque não sabia como proceder, fiz da seguinte forma:

PS.: As cores HEX estão definidas com um “#c” antes de seu valor “000000” propositalmente, pois e assim que o script do chat as reconhece…

import java.util.ArrayList;
import javax.swing.JTextField;


/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * JFColorizer.java
 *
 * Created on 22/01/2011, 14:48:38
 */

/**
 *
 * @author victorcosta
 */
public class JFColorizer extends javax.swing.JFrame {
    /** Creates new form JFColorizer */
    public JFColorizer() {
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jPanel2 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jTextField1 = new javax.swing.JTextField();
        jTextField2 = new javax.swing.JTextField();
        jLabel3 = new javax.swing.JLabel();
        jBGera = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jMenuBar1 = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();
        jCheckBoxMenuItem1 = new javax.swing.JCheckBoxMenuItem();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Colorizer"));

        jPanel2.setBorder(javax.swing.BorderFactory.createEtchedBorder());

        jLabel1.setText("Original (Máximo 8 caracteres):");

        jLabel2.setText("Colorido:");

        jLabel3.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N
        jLabel3.setForeground(new java.awt.Color(200, 88, 200));
        jLabel3.setText("Degradê Rosa");

        jBGera.setText("Gerar");
        jBGera.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBGeraActionPerformed(evt);
            }
        });

        jButton2.setText("Limpar");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addGap(120, 120, 120)
                .addComponent(jLabel3)
                .addContainerGap(116, Short.MAX_VALUE))
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
                .addContainerGap(19, Short.MAX_VALUE)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, 328, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 304, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel2)
                    .addComponent(jLabel1))
                .addContainerGap())
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
                .addContainerGap(229, Short.MAX_VALUE)
                .addComponent(jBGera)
                .addGap(16, 16, 16)
                .addComponent(jButton2)
                .addContainerGap())
        );

        jPanel2Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jTextField1, jTextField2});

        jPanel2Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jBGera, jButton2});

        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel3)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLabel1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLabel2)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jBGera)
                    .addComponent(jButton2)))
        );

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
        );

        jMenu1.setText("Sobre");

        jCheckBoxMenuItem1.setSelected(true);
        jCheckBoxMenuItem1.setText("Desenvolvido por VictorCosta|DESIGN");
        jMenu1.add(jCheckBoxMenuItem1);

        jMenuBar1.add(jMenu1);

        setJMenuBar(jMenuBar1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
        );

        pack();
    }// </editor-fold>                        

    private void jBGeraActionPerformed(java.awt.event.ActionEvent evt) {                                       
        // TODO add your handling code here:
        String original = jTextField1.getText();
        String cor1 = "#cAA44AA";
        String cor2 = "#cAA55AA";
        String cor3 = "#cAA66AA";
        String cor4 = "#cAA77AA";
        String cor5 = "#cAA88AA";
        String cor6 = "#cAA99AA";
        String cor7 = "#cAAAAAA";
        String cor8 = "#cAABBAA";
        if (original.length() == 1){
         jTextField2.setText(cor1+original.charAt(0));
        }
        if (original.length() == 2){
         jTextField2.setText(cor1+original.charAt(0)+cor2+original.charAt(1));
        }
        if (original.length() == 3){
         jTextField2.setText(cor1+original.charAt(0)+cor2+original.charAt(1)+
                 cor3+original.charAt(2));
        }
        if (original.length() == 4){
         jTextField2.setText(cor1+original.charAt(0)+cor2+original.charAt(1)+
                 cor3+original.charAt(2)+cor4+original.charAt(3));
        }
        if (original.length() == 5){
         jTextField2.setText(cor1+original.charAt(0)+cor2+original.charAt(1)+
                 cor3+original.charAt(2)+cor4+original.charAt(3)+cor5+
                 original.charAt(4));
        }
        if (original.length() == 6){
         jTextField2.setText(cor1+original.charAt(0)+cor2+original.charAt(1)+
                 cor3+original.charAt(2)+cor4+original.charAt(3)+cor4+
                 original.charAt(4)+cor6+original.charAt(5));
        }
        if (original.length() == 7){
         jTextField2.setText(cor1+original.charAt(0)+cor2+original.charAt(1)+
                 cor3+original.charAt(2)+cor4+original.charAt(3)+cor4+
                 original.charAt(4)+cor6+original.charAt(5)+cor7+
                 original.charAt(6));
        }
        if (original.length() == 8){
         jTextField2.setText(cor1+original.charAt(0)+cor2+original.charAt(1)+
                 cor3+original.charAt(2)+cor4+original.charAt(3)+cor4+
                 original.charAt(4)+cor6+original.charAt(5)+cor7+
                 original.charAt(6)+cor8+original.charAt(7));
        }
    }                                      

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        jTextField1.setText("");
        jTextField2.setText("");
    }                                        

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new JFColorizer().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify                     
    private javax.swing.JButton jBGera;
    private javax.swing.JButton jButton2;
    private javax.swing.JCheckBoxMenuItem jCheckBoxMenuItem1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    // End of variables declaration                   

}

Sugestões são bem vindas!

Legal que tenha funcionado… tudo bem na limitação de 8 caractes?
Caso te interesse ou te seja util, uma breve demonstração de como utilizar ArrayList…

A classe ArrayList faz parte da API que implementa Colection, ou seja é uma coleção… funciona como uma Array simples “String[] texto = new String[5];”, porem é mais flexivel e redimensionavel…

um exemplo de uso seria assim…

ArrayList<String>cores = new ArrayList<String>(); //Aqui se cria a variavel e é atribuida a ela uma referencia de um objeto do tipo ArrayList<String>. cores.add("#cAA44AA"); //Aqui é adicionado os elementos na coleção... cores.add("#cAA55AA"); ... String elementoRecuperado = cores.get(0);//Aqui se recupera o elemento na coleção de acordo com o index.
Caso queira melhorar o seu programa para deixa-lo mais flexivel sem limite de caracteres, veja o pseudo-código abaixo.
É um pseudo-código meio que tosco…(Já que não sou bom em escrever pseudo-códigos).
[code]Coleção coleçãoDeCores;

Adiciona o texto "#cAA44AA" à coleçãoDeCores;
Adiciona o texto "#cAA55AA" à coleçãoDeCores;
...

Texto resultado;
numero endereçoDaLetra = 0;
numero endereçoColeção = 0;
Equanto o endereçoaDaLetra existir no texto original, fazer
	Se o endereçoColeção ainda existir na coleçãoDeCores, fazer
		resultado = resultado + Texto da coleção no endereçoColeção + letra Do endreçoDaLetra no Texto Original;
	Senão
	{	
		endereçoColeção = 0;
		resultado = resultado + Texto da coleção no endereçoColeção + letra Do endreçoDaLetra no Texto Original;
	}[/code]

kkkkk entendi perfeitamente o funcionamento do arraylist mas, onde devo declarar? main ou no evento do botão?

quanto ao pseudo-código, à partir da linha 06 fica confuso pra mim.

E, sim eu quero remover o limite de 8 letras (até porque n consegui limittar o jTextField e o pessoal ficou tentando ir além)

mais uma vez, obrigado pela atenção! :slight_smile:

Caso queira usá-la em outro lugar ou evento de outros botões, terá que colocá-la no cabeçalho da classe…

public class JFColorizer extends javax.swing.JFrame { ... ArrayList<String>cores = new ArrayList<String>();
Senão pode deixá-la no evento do botão mesmo…
.
Na linha 7 é a declaração da variável do tipo texto que terá o resultado final das concatenações…
Ex:

String resultado = "";

Na linha 8 e 9 é a declaração das variáveis numéricas de tipo inteiro que representara respectivamente os endereço das cores na coleção ArrayList e endereço das letras no texto original…
Ex:

int indexTexto = 0; int indexCor = 0;
Na linha 10 é a parte da condição para a repetição de concatenação das cores com as letras… ou seja, onde ira verificar se ainda possui letras a serem concatenadas com as Strings de cores…
Ex:

for(;indexTexto<original.length();indexTexto++,indexCor++)//Esse é um laço de repetição For, também poderia ser um while

indexTexto<original.length() = enquanto o index for menor que o tamanho total do texto continuar a concatenar…
indexTexto++,indexCor++ = incrementa 1 nas variáveis de index a cada rodada da repetição… Seria como “indexCor = indexCor + 1”.
Na linha 11 é a condição que verifica se existe mais cores para serem concatenadas…
Ex:

if(cores.size()>indexCor)//Se o index for menor que o total de cores na coleção...

Na linha 12 é onde ocorre a concatenação…
Ex:

resultado += cores.get(indexCor) + original.charAt(indexTexto);//recupera a cor no endereço "indexCor" e concatena com a letra no endereço "indexTexto" e por fim concatena com a String resultado

A linha 12 e a linha 16 iram ocorrer enquanto houver letras a serem concatenadas…
Na linha 13 é no caso se não houver mais cores a serem concatenadas com as letras… então na linha 15 a variável indexCor é zerada e continua a concatenar novamente a partir da primeira cor na coleção…
.
Dessa maneira podera adicionar novas cores quando quiser e não se preocupar com o tamanho do texto digitado pelo usuario…
Sugiro colocar o resultado num JTextArea, pois dependendo do texto digitado pelo usuário a String resultado ficara realmente enorme…
Coloquei alguns exemplos em códigos por que realmente é dificil explicar em pseudo-código…

Qual sistema de chat? Poderia me dizer mais sobre isso?

Por favor contate-me
mtnoronha7@hotmail.com

Eis o código obtido aqui, adicionei um botão que limpa e outro que copia. Também tem dois botões para gerar o código de cor - um gera gradiente(verdeescuro para verdeclaro) e o outro (com as cores do arcoiris)… Porém, verifiquei que ele escreve mais que 8 caracteres mas continua gerando código limitado! e agora? =(

import java.util.ArrayList;


/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * JFColorizer.java
 *
 * Created on 22/01/2011, 14:48:38
 */

/**
 *
 * @author victorcosta
 */
public class JFColorizer extends javax.swing.JFrame {
    /** Creates new form JFColorizer */
    public JFColorizer() {
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jPanel2 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jTextField1 = new javax.swing.JTextField();
        jButton2 = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTextArea1 = new javax.swing.JTextArea();
        jButton1 = new javax.swing.JButton();
        jButton3 = new javax.swing.JButton();
        jBGera = new javax.swing.JButton();
        jMenuBar1 = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();
        jCheckBoxMenuItem1 = new javax.swing.JCheckBoxMenuItem();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Colorizer"));

        jPanel2.setBorder(javax.swing.BorderFactory.createEtchedBorder());

        jLabel1.setText("Original (Máximo 8 caracteres):");

        jLabel2.setText("Colorido:");

        jButton2.setText("Limpar");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

        jTextArea1.setColumns(20);
        jTextArea1.setRows(5);
        jScrollPane1.setViewportView(jTextArea1);

        jButton1.setText("Copiar");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jButton3.setText("Gerar Arco-íris");
        jButton3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton3ActionPerformed(evt);
            }
        });

        jBGera.setText("Gerar Verde");
        jBGera.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBGeraActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jLabel2, javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel1, javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jTextField1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 383, Short.MAX_VALUE)
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel2Layout.createSequentialGroup()
                        .addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, 144, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 8, Short.MAX_VALUE)
                        .addComponent(jBGera)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jButton1)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jButton2))
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 383, Short.MAX_VALUE))
                .addContainerGap())
        );

        jPanel2Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jBGera, jButton2});

        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
                .addComponent(jLabel1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLabel2)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 108, Short.MAX_VALUE)
                .addGap(18, 18, 18)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jButton3)
                    .addComponent(jButton2)
                    .addComponent(jButton1)
                    .addComponent(jBGera)))
        );

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );

        jMenu1.setText("Sobre");

        jCheckBoxMenuItem1.setSelected(true);
        jCheckBoxMenuItem1.setText("Desenvolvido por VictorCosta|DESIGN");
        jMenu1.add(jCheckBoxMenuItem1);

        jMenuBar1.add(jMenu1);

        setJMenuBar(jMenuBar1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
        );

        pack();
    }// </editor-fold>                        

    private void jBGeraActionPerformed(java.awt.event.ActionEvent evt) {                                       
        // TODO add your handling code here:
        String original = jTextField1.getText();
       ArrayList<String>coresverde = new ArrayList<String>();
       coresverde.add("#c085200");
       coresverde.add("#c0E8E00");
       coresverde.add("#c11B000");
       coresverde.add("#c14D000");
       coresverde.add("#c17EC00");
       coresverde.add("#c19FF00");
       String resultado = "";
       int indexTexto = 0;
       int indexCor = 0;
       for(;indexTexto<original.length();indexTexto++,indexCor++)
           if(coresverde.size()>indexCor)
               resultado += coresverde.get(indexCor) + original.charAt(indexTexto);
       jTextArea1.setText(resultado);
    }                                      

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        jTextField1.setText("");
        jTextArea1.setText("");
    }                                        

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        jTextArea1.selectAll();
        jTextArea1.copy();
    }                                        

    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        String original = jTextField1.getText();
        ArrayList<String>coresarcoiris = new ArrayList<String>();
       coresarcoiris.add("#cFF0000");
       coresarcoiris.add("#cFF9A00");
       coresarcoiris.add("#cE3FF00");
       coresarcoiris.add("#c0F9F00");
       coresarcoiris.add("#c0C00FF");
       coresarcoiris.add("#c9300FF");
       String resultado = "";
       int indexTexto = 0;
       int indexCor = 0;
       for(;indexTexto<original.length();indexTexto++,indexCor++)
           if(coresarcoiris.size()>indexCor)
               resultado += coresarcoiris.get(indexCor) + original.charAt(indexTexto);
       jTextArea1.setText(resultado);
    }                                        

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new JFColorizer().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify                     
    private javax.swing.JButton jBGera;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JCheckBoxMenuItem jCheckBoxMenuItem1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextArea jTextArea1;
    private javax.swing.JTextField jTextField1;
    // End of variables declaration                   

}

[quote]for(;indexTexto<original.length();indexTexto++,indexCor++) if(coresverde.size()>indexCor) resultado += coresverde.get(indexCor) + original.charAt(indexTexto); [/quote]
Continua limitado por apenas um detalhe de lógica… falta um else para a condição if, do jeito que esta agora é só adicionar mais 3 linhas de código e ira funcionar perfeitamente.
De uma olhada na condição if(coresverde.size()>indexCor), essa condição só permitira que a linha seguinte ocorra se ainda houver mais cores a serem concatenadas, dessa forma se houver apenas 6 opções de cores só ira concatenar seis letras…

O que faltou foi…(if…else… “se… senão…”)

else{ indexCor = 0; resultado += coresverde.get(indexCor) + original.charAt(indexTexto); } //Como é mais de uma linha na condição, é necessário colocar o código entre chaves
Com isso ira funcionar perfeitamente… note que desse jeito sempre que acabar as opções de cores ira repetir o degrade, no caso verde-escuro para ver-declaro… com uma mudança na condição e adicionando um decremento, isso pode ser diferente, só dependera da lógica empregada nesse código.

Desculpe, deveria ter prestado mais atenção!
Agora funciona corretamente, vou pensar numa função que evite concatenação com espaços (" ")
Enfim, muito obrigado mesmo!