// 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:
- Criando um JFrame em Java
- Somando dois números com JOptionPane em Java
- Calculadora simples em Java
- IMC em Java
- Eventos com JButton (mudando a cor do JPanel) em Java
- Jogo da Forca em Java
- Calculadora Completa em Java
- Jogo da Memória 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 |