Larback - Retornando conhecimento

Suco grande

Menus com checkbox e radiobuttons - Utilização de fontes

Para encerrarmos o assunto sobre menus (a princípio pelo menos), segue abaixo uma classe que utiliza JRadioButtonMenuItem e JCheckBoxMenuItem (além dos componentes básicos de menus que já vimos). De brinde, vai a utilização de classe interna e da classe Font. Bons estudos

import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ButtonGroup;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JRadioButtonMenuItem;

public class Formatacao  extends JFrame{
	JLabel jlTexto = new JLabel("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
	int estilo = Font.PLAIN;
	JMenuBar jmb = new JMenuBar();
	JMenu jmnFormatar = new JMenu("Formatar");
	JMenu jmnFont = new JMenu("Fonte");
	JMenu jmnEstilo = new JMenu("Estilo");
	JRadioButtonMenuItem jrmSans = new JRadioButtonMenuItem("Sans Serif",true);
	JRadioButtonMenuItem jrmMono = new JRadioButtonMenuItem("Mono spaced");
	JRadioButtonMenuItem jrmSerif = new JRadioButtonMenuItem("Serif");
	
	JCheckBoxMenuItem jcmNegrito = new JCheckBoxMenuItem("Negrito");
	JCheckBoxMenuItem jcmItalico = new JCheckBoxMenuItem("Itálico");
	ButtonGroup bgFontes = new ButtonGroup();

	public Formatacao() {
		super();
		bgFontes.add(jrmSans);
		bgFontes.add(jrmMono);
		bgFontes.add(jrmSerif);
		jmnFormatar.setMnemonic('f');
		jmnFont.setMnemonic('o');
		jmnEstilo.setMnemonic('e');
		setJMenuBar(jmb);
		jmb.add(jmnFormatar);
		jmnFormatar.add(jmnFont);
		jmnFormatar.add(jmnEstilo);
		jmnFont.add(jrmSans);
		jmnFont.add(jrmMono);
		jmnFont.add(jrmSerif);
		
		jmnEstilo.add(jcmNegrito);
		jmnEstilo.add(jcmItalico);
		
		setSize(600,300);
		setLocationRelativeTo(null);
		setLayout(new FlowLayout());
		jlTexto.setFont(new Font("arial",estilo,15));
		add(jlTexto);
		TEstilo tEstilo = new TEstilo();
		jcmItalico.addActionListener(tEstilo);
		jcmNegrito.addActionListener(tEstilo);
		
		jrmSerif.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				jlTexto.setFont(new Font("Serif",estilo,15));
			}
		});
		jrmMono.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				jlTexto.setFont(new Font("Monospaced",estilo,15));
			}
		});
		jrmSans.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				jlTexto.setFont(new Font("SansSerif",estilo,15));
			}
		});
		setVisible(true);
	}
	private class TEstilo implements ActionListener{
		@Override
		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			estilo = Font.PLAIN;
			if (jcmItalico.isSelected())
				estilo += Font.ITALIC;
			if (jcmNegrito.isSelected())
				estilo += Font.BOLD;
			jlTexto.setFont(new Font(jlTexto.getFont().getName(),estilo,15));			
		}	
	}
	public static void main(String [] args){
		new Formatacao();
	}
}