[RESOLVIDO]Ajuda com ActionListener

3 respostas
L

Bom, eu estou criando um editorzinho de fontes e com isso
me surgiu uma dúvida com ActionListener.

Aí o código

import javax.swing.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;

public class Editor extends JFrame {

    JTextField entrada2;
    JTextField entrada;
	Font fonte = new Font("SansSerif", Font.PLAIN, 20);

    public Editor() { 
    super("Editor");
	
	criaMenu();
	
	JButton botao1 = new JButton("Negrito");
	botao1.addActionListener(new ActionListener() {
	
	    public void actionPerformed(ActionEvent e1) {
	
			Font fonte1 = new Font("SansSerif", Font.BOLD, 20);
			entrada.setFont(fonte1);	
            entrada.setForeground(Color.BLACK);			
		
		}
	});	
	botao1.addActionListener(new ActionListener() {
	
	    public void actionPerformed(ActionEvent e1) {
		
		    entrada.setFont(fonte);
		
		}
	});	
	
	JButton botao2 = new JButton("Italico");
	botao2.addActionListener(new ActionListener() {
	
	    public void actionPerformed(ActionEvent e1) {
		
		    Font fonte2 = new Font("SansSerif", Font.ITALIC, 20);
			entrada.setFont(fonte2);
			entrada.setForeground(Color.BLACK);
		
		}
    });		
	
	JButton botao3 = new JButton("Cor");
	botao3.addActionListener(new ActionListener() {
	
	    public void actionPerformed(ActionEvent e1) {
	
			entrada.setForeground(Color.RED);
	
	    }
	});
	
	JButton botao4 = new JButton("Normal");
	botao4.addActionListener(new ActionListener() {
	
	    public void actionPerformed(ActionEvent e1) {
		
		    entrada.setFont(fonte);   
            entrada.setForeground(Color.BLACK);			
	    }
		
	});
	 
	entrada = new JTextField();
	entrada.setFont(fonte);
	
    entrada2 = new JTextField();
	entrada2.setEditable(false);
	
	
	Container c2 = new JPanel();;
	c2.setLayout(new FlowLayout());
	c2.add(botao1);
	c2.add(botao2);
	c2.add(botao3);
	c2.add(botao4);
	
    Container c3 = getContentPane();
	c3.setLayout(new BorderLayout());
	c3.add(BorderLayout.SOUTH, entrada);
	c3.add(c2);
    	
	
	setSize(300,100);
	setDefaultCloseOperation(EXIT_ON_CLOSE);
	setVisible(true);
	setResizable(true);
    
	}
	
    public static void main(String[] args) {
	    new Editor();
	
	}


    JMenuBar criaMenu() {
	
	    JMenuBar menu = new JMenuBar();
	    menu.setBackground(Color.white);
		JMenu arquivo = new JMenu("Arquivo");
		
		menu.add(arquivo);

        return menu;
	}
}

A duvida é a seguinte, quando eu aperto o botão negrito,
a fonte fica negrito, normal. Mas eu queria saber
como eu posso fazer pra quando eu apertar o botão negrito de novo
a fonte voltar ao normal..

Bom, desde já, obrigado!

3 Respostas

drsmachado

Há várias formas.
Uma delas é ter uma variável booleana chamada bold. Quando o texto estiver “normal” e você clicar em “negrito”, defina o valor de bold para true e, quando fizer o inverso, para false.

carlinbh

Crie um atributo booleano para testar se já está negrito ou não.

boolean isNegrito = false;

E aplique uma condição antes de executar a ação.

JButton botao1 = new JButton("Negrito");  
    botao1.addActionListener(new ActionListener() {  

        public void actionPerformed(ActionEvent e1) {  
            if(isNegrito == false) {
                 Font fonte1 = new Font("SansSerif", Font.BOLD, 20);  
                 entrada.setFont(fonte1);       
                 isNegrito = true;
            } else {
                 Font fonte1 = new Font("SansSerif", Font.PLAIN, 20);  
                 entrada.setFont(fonte1); 
                 isNegrito = false;
            }
          
        }  
    });
L

Valeu caras, funcionou direitinho :smiley: :smiley:

Criado 12 de abril de 2013
Ultima resposta 12 de abr. de 2013
Respostas 3
Participantes 3