Manipulando a fonte e a cor do JLabel.


// Importando bibliotecas necessárias.
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;


public class ModificadorTexto extends JFrame {
    
    
    Color Cor = Color.BLACK;
    Color CorDoTexto = Color.BLACK;
    
    // Inicializando o EstiloDaFonte, TamanhoDaFonte e FonteTexto.
    int EstiloDaFonte = 0;
    int TamanhoDaFonte = 20;
    String FonteTexto = "Tahoma";
    
    String TextoDoLabel;
    
    boolean Negrito = false;
    boolean Itálico = false;
    boolean Sublinhado = false;
    String Texto = "http://programjm.blogspot.com.br/";
    
    String Fonte[] = {"Tahoma", "Arial Black", "Calibri", "Times New Roman"};
    String Tamanho[] = {"20", "22", "24", "26", "28"};
    
    
    
    // Construtor da classe ModificadorTexto.
    public ModificadorTexto() {
        
        /*
         * http://programjm.blogspot.com.br/
         * @Autor: João Matheus Santos Assis
        */
        
        // Chamando o método de Inicialização.
        initComponents();  
        
    }
    
    
    // Tratando os Eventos do ComboBox_Fonte.
    private void ComboBox_FonteItemListener(ItemEvent event) {
        
        // Obtêm a FonteTexto selecionada e chama o método setConfigurar.
        if (event.getStateChange() == ItemEvent.SELECTED) {
            FonteTexto = (String) ComboBox_Fonte.getSelectedItem();
            setConfigurar();
        }
        
    }
    
    
    // Tratando os Eventos do ComboBox_Tamanho.
    private void ComboBox_TamanhoItemListener(ItemEvent event) {
        
        // Obtêm o TamanhoDaFonte selecionado e chama o método setConfigurar.
        if (event.getStateChange() == ItemEvent.SELECTED) {
            TamanhoDaFonte = ComboBox_Tamanho.getSelectedIndex();
            /*
             * Se o SelectedIndex for 0, então 2*0+20 = 20.
             * Se o SelectedIndex for 1, então 2*1+20 = 22.
             * Se o SelectedIndex for 2, então 2*2+20 = 24.
             * Se o SelectedIndex for 3, então 2*3+20 = 26.
             * Se o SelectedIndex for 4, então 2*4+20 = 28.
             */
            TamanhoDaFonte = (2*TamanhoDaFonte+20);
            setConfigurar();
        }
        
    }
    
    
    private void Button_NegritoActionListener(ActionEvent event) {
        
        /*
         * Se Negrito e Itálico estiver ativo o EstiloDaFonte será igual a 3;
         * Se somente Negrito estiver ativo o EstiloDaFonte será igual a 1;
         * Se nem Negrito e nem Itálico estiver selecionado
         * o EstiloDaFonte será igual a 0.
         */
        
        if (Negrito == false) {
            if (Itálico == true) EstiloDaFonte = 3;
            else
                EstiloDaFonte = 1;
            Negrito = true;
            setConfigurar();
        } else {
            if (Itálico == true) EstiloDaFonte = 2;
            else
                EstiloDaFonte = 0;
            Negrito = false;
            setConfigurar();
        }
        
    }
    
    
    private void Button_ItalicoActionListener(ActionEvent event) {
        
        if (Itálico == false) {
            if (Negrito == true) EstiloDaFonte = 3;
            else
                EstiloDaFonte = 2;
            Itálico = true;
            setConfigurar();
        } else {
            if (Negrito == true) EstiloDaFonte = 1;
            else
                EstiloDaFonte = 0;
            Itálico = false;
            setConfigurar();
        }
        
    }
    
    
    private void Button_SublinhadoActionListener(ActionEvent event) {
        
        if (Sublinhado == false) {
            // Formatando o texto do Label_Visualizador utilizando recursos html.
            Label_Visualizador.setText("<html><u>" +
                    Label_Visualizador.getText() + "</u></html>");
            Sublinhado = true;
            setConfigurar();
        } else {
            Label_Visualizador.setText(Texto);
            Sublinhado = false;
            setConfigurar();
        }
        
    }
    
    
    private void Button_CorActionListener(ActionEvent event) {
        
        /* 
         * Abrindo uma caixa de diálogo que permite ao usuário 
         * selecionar uma determinada cor de forma interativa.
         */
        Cor = JColorChooser.showDialog(ModificadorTexto.this,
                "Alterar Cor da Fonte", Cor);
        
        /* 
         * Caso a cor escolhida seja válida a cor 
         * do Label_Visualizador será modificada.
         */
        if (Cor != null){
            CorDoTexto = Cor;
            Label_Visualizador.setForeground(CorDoTexto);
        }
        
    }
    
    
    private void Button_MudarTextoActionListener(ActionEvent event) {
        
        /* 
         * TextoDoLabel armazenará o texto digitado
         * pelo o usuário na caixa de diálogo.
         */
        TextoDoLabel = JOptionPane.showInputDialog(ModificadorTexto.this
                "Texto Atual: " + Texto + 
                "\n Novo Texto (Tamanho mínimo: 1 | Tamanho máximo:19): ");
        
        /* Caso o texto seja válido e atenda as exigências pedidas o 
         * texto do Label_Visualizador será atualizado.
         */
        if ( (TextoDoLabel != null) && (TextoDoLabel.length() > 0 &&
                TextoDoLabel.length() < 20)) {
            Label_Visualizador.setText(TextoDoLabel);
            Texto = TextoDoLabel;
        }
        
    }
    
    
    /* 
     * Método responsável por atualizar a Fonte do Label_Visualizador e
     * definir o texto do Label_BarraStatus.
     */
    public void setConfigurar() {
        
        /*
         * EstiloDaFonte = 0, representa o estilo simples da fonte.
         * EstiloDaFonte = 1, representa o estilo Negrito da fonte.
         * EstiloDaFonte = 2, representa o estilo Itálico da fonte.
         * EstiloDaFonte = 3, representa o estilo Negrito e Itálico da fonte.
         *
         * *******************************************************************
         * 
         * Label_Visualizador.getFont().getSize() retorna a fonte atual;
         * 
         * Label_Visualizador.getFont().isBold() retorna true se o 
         * Label_Visualizador estiver em negrito e false caso não esteja;
         * 
         * Label_Visualizador.getFont().isItalic() retorna true se o
         * Label_Visualizador estiver em itálico e false caso não esteja.
         */
        
        FonteDoTexto = new Font(FonteTexto, EstiloDaFonte, TamanhoDaFonte);
        Label_Visualizador.setFont(FonteDoTexto);
        Label_BarraStatus.setText("  Fonte [" + FonteTexto + 
                "] // Tamanho [" + Label_Visualizador.getFont().getSize() + 
                "] // Negrito[" + Label_Visualizador.getFont().isBold() + 
                "] // Itálico[" + Label_Visualizador.getFont().isItalic()+ 
                "] // Sublinhado[" + Sublinhado + "]"
       );
    }

    
    
    // Método com os componentes de inicialização.
    private void initComponents() {
        
        // Propriedade da Janela.
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // Título da Janela.
        setTitle("Modificador de Texto");
        // Desabilitando o Maximizar.
        setResizable(false);
        // Defindo 560 de largura e 200 de altura para o JFrame.
        setSize(560,200);
        // Abrindo janela no meio da tela.
        setLocationRelativeTo(null);
        
        
        // Barra de ferramenta.
        BarraFerramenta = new JToolBar();
        
        
        // O ComboBox_Fonte armazenará alguns tipos de fonte.
        ComboBox_Fonte = new JComboBox();
        // Fonte.length retorna o tamanho do vetor Fonte.
        for (int i = 0; i < Fonte.length; ++i)
            // Adicionando Itens ao ComboBox_Fonte.
            ComboBox_Fonte.addItem(Fonte[i]);
        ComboBox_Fonte.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent event) {
                ComboBox_FonteItemListener(event);
            }
        });
        // Adicionando o ComboBox_Fonte à BarraFerramenta.
        BarraFerramenta.add(ComboBox_Fonte);
        
        
        
        // O ComboBox_Tamanho armazenará alguns tamanho de fonte.
        ComboBox_Tamanho = new JComboBox();
        for (int i = 0; i < Tamanho.length; ++i)
            ComboBox_Tamanho.addItem(Tamanho[i]);
        ComboBox_Tamanho.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent event) {
                ComboBox_TamanhoItemListener(event);
            }
        });
        // Adicionando o ComboBox_Tamanho à BarraFerramenta.
        BarraFerramenta.add(ComboBox_Tamanho);
        
        
        
        // Adicionando o JSeparator de forma vertical à BarraFerramenta.
        BarraFerramenta.add(new JSeparator(SwingConstants.VERTICAL));
        
        
        
        // Adicionando as propriedades do Button_Negrito.
        Button_Negrito = new JButton();
        Button_Negrito.setText("N");
        // Definindo a dimensão preferrencial do Button_Negrito.
        Button_Negrito.setPreferredSize(new Dimension(50,20));
        /* 
         * O setMnemonic recebe um argumento do tipo char, 
         * desencadeando a ação do Button_Negrito quando 
         * pressionado Alt + argumento recebido (no caso, N).
         */
        Button_Negrito.setMnemonic('N');
        /* 
         * O setToolTipText exibi um texto informativo quando
         * o usuário deixa o mouse parado sobre o JButton.
         */
        Button_Negrito.setToolTipText("Negrito (Alt + N)");
        // Gerando a ação a ser realizada quando o usuário clicar no Button_Negrito.
        Button_Negrito.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent event) {
                /* 
                 * Chamando o método onde as ações desencadeada por 
                 * causa do click sobre o componente será tratado.
                 */
                Button_NegritoActionListener(event);
            }
        });
        // Adicionando o Button_Negrito à BarraFerramenta.
        BarraFerramenta.add(Button_Negrito);
        
        
        
        // Adicionando as propriedades do Button_Italico.
        Button_Italico = new JButton();
        Button_Italico.setText("I");
        Button_Italico.setPreferredSize(new Dimension(50,20));
        Button_Italico.setMnemonic('I');
        Button_Italico.setToolTipText("Itálico (Alt + I)");
        Button_Italico.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent event) {
                Button_ItalicoActionListener(event);
            }
        });
        // Adicionando o Button_Italico à BarraFerramenta.
        BarraFerramenta.add(Button_Italico);
        
        
        
        // Adicionando as propriedades do Button_Sublinhado.
        Button_Sublinhado = new JButton();
        Button_Sublinhado.setText("S");
        Button_Sublinhado.setPreferredSize(new Dimension(50,20));
        Button_Sublinhado.setMnemonic('S');
        Button_Sublinhado.setToolTipText("Sublinhado (Alt + S)");
        Button_Sublinhado.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent event) {
                Button_SublinhadoActionListener(event);
            }
        });
        // Adicionando o Button_Sublinhado à BarraFerramenta.
        BarraFerramenta.add(Button_Sublinhado);
        
        
        
        BarraFerramenta.add(new JSeparator(SwingConstants.VERTICAL));
        
        
        
        // Adicionando as propriedades do Button_Cor.
        Button_Cor = new JButton();
        Button_Cor.setText("Cor");
        Button_Cor.setToolTipText("Mudar Cor do Texto");
        Button_Cor.setPreferredSize(new Dimension(50,20));
        Button_Cor.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent event) {
                Button_CorActionListener(event);
            }
        });
        // Adicionando o Button_Cor à BarraFerramenta.
        BarraFerramenta.add(Button_Cor);
        
        
        
        BarraFerramenta.add(new JSeparator(SwingConstants.VERTICAL));
        
        
        
        // Adicionando as propriedades do Button_MudarTexto.
        Button_MudarTexto = new JButton();
        Button_MudarTexto.setText("Novo Texto");
        Button_MudarTexto.setToolTipText("Editar Texto");
        Button_MudarTexto.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent event) {
                Button_MudarTextoActionListener(event);
            }
        });
        // Adicionando o Button_MudarTexto à BarraFerramenta.
        BarraFerramenta.add(Button_MudarTexto);
        
        
        
        add(BarraFerramenta, BorderLayout.NORTH);
        
        
        
        Panel_Visualizador = new JPanel();
        // Adicionando o título ao Panel_Visualizador.
        Panel_Visualizador.setBorder(
                BorderFactory.createTitledBorder("Visualizador")
        );
        add(Panel_Visualizador, BorderLayout.CENTER);
        
        
        
        Label_Visualizador = new JLabel();
        Label_Visualizador.setText(Texto);
        Panel_Visualizador.add(Label_Visualizador);
        
        
        
        Label_BarraStatus = new JLabel();
        setConfigurar();
        // Estabelecendo a fonte do Label_BarraStatus.
        Label_BarraStatus.setFont(new Font("Tahoma", 0, 12));
        add(Label_BarraStatus, BorderLayout.SOUTH);
        
    }
    
    
    // Componentes gráficos utilizados.
    private JToolBar BarraFerramenta;
        private JComboBox ComboBox_Fonte;
        private JComboBox ComboBox_Tamanho;
        private JButton Button_Negrito;
        private JButton Button_Italico;
        private JButton Button_Sublinhado;
        private JButton Button_Cor;
        private JButton Button_MudarTexto;
        
    private JPanel Panel_Visualizador;
        private JLabel Label_Visualizador;
        
    private Font FonteDoTexto;
    
    private JLabel Label_BarraStatus;
    
    
    
    // Método principal.
    public static void main(String [] args) {
        
        /* 
         * Definindo a aparência e comportamento da interface,
         * ou seja a forma como os componentes gráficos serão
         * desenhados na tela.
         */
        
        try {
            for (UIManager.LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(ModificadorTexto.class.getName()).log(Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            Logger.getLogger(ModificadorTexto.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(ModificadorTexto.class.getName()).log(Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            Logger.getLogger(ModificadorTexto.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        EventQueue.invokeLater(new Runnable() {
            
            @Override
            public void run() {
                new ModificadorTexto().setVisible(true);
            }
            
        });
        
    }
   
}



Palavras-Chaves: Negrito, Itálico, Sublinhado, Tamanho da fonte, Eventos com JComboBox, Eventos com JButton, JOptionPane, JColorChooser, JButton, JToolBar, JPanel, Font, JLabel,  BorderLayout, Barra de Ferramenta, Barra de Status informando o estado da fonte, Java.


Artigos relacionados em Java:




Feito no NetBeans-7.1 | Executável


Feito no NetBeans-7.1 | Executável



Feito no NetBeans-7.1 | Executável


Feito no NetBeans-7.1 | Executável