Hola a todos, ¿qué hay? Vamos a ver la
creación los submenús con radiobutton. Tiene una gran similitud con
el apartado anterior que creamos un submenú con checkbox. La diferencia
entre un elemento y otro, que los radiobutton solo puedes
seleccionar uno, así como los checkbox sirven para seleccionar
varios elementos a la vez.
Vamos a utilizar el mismo código que en el apartado
anterior, es el siguiente:
package swing;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.text.StyledEditorKit;
public class MenuCheckBox
{
public static void main(String[] args) {
MarcoMenuCheck mimarco = new MarcoMenuCheck();
mimarco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class MarcoMenuCheck extends JFrame
{
public MarcoMenuCheck(){
setVisible(true);
setBounds(550,
300, 550, 400);
LaminaMenuCheck milamina = new LaminaMenuCheck();
add(milamina);
}
}
class LaminaMenuCheck extends JPanel
{
public LaminaMenuCheck()
{
setLayout(new BorderLayout());
JPanel laminamenu = new JPanel();
//-------------MENÚS--------------------
JMenuBar barra = new JMenuBar();
fuente = new JMenu("Fuente");
estilo = new JMenu("Estilo");
tamaño = new JMenu("Tamaño");
//--------Tipo letra--------------------
ConfiguraMenu("Arial", "fuente", "Arial", 9,
10, "");
ConfiguraMenu("Courier", "fuente", "Courier", 9,
10, "");
ConfiguraMenu("Verdana", "fuente", "Verdana", 9,
10, "");
//--------Formato-------------------
JCheckBoxMenuItem negrita = new JCheckBoxMenuItem("Negrita", new ImageIcon("src/swing/negrita.gif"));
JCheckBoxMenuItem cursiva = new JCheckBoxMenuItem("Cursiva", new ImageIcon("src/swing/cursiva.gif"));
negrita.addActionListener(new StyledEditorKit.BoldAction());
cursiva.addActionListener(new StyledEditorKit.ItalicAction());
estilo.add(negrita);
estilo.add(cursiva);
//--------Tamaño letra-----------------
barra.add(fuente);
barra.add(estilo);
barra.add(tamaño);
laminamenu.add(barra);
add(laminamenu,
BorderLayout.NORTH);
area = new JTextPane();
add(area,
BorderLayout.CENTER);
}
public void ConfiguraMenu(String rotulo,
String menu, String tipoletra, int estilos, int tam,
String ruta_icono) {
JMenuItem elementoMenu = new JMenuItem(rotulo, new ImageIcon(ruta_icono));
if(menu=="fuente") {
fuente.add(elementoMenu);
if(tipoletra=="Arial") {
elementoMenu.addActionListener(new StyledEditorKit.FontFamilyAction("cambia_letra", "Arial"));
}else if(tipoletra=="Courier") {
elementoMenu.addActionListener(new StyledEditorKit.FontFamilyAction("cambia_letra", "Courier"));
}else if(tipoletra=="Verdana") {
elementoMenu.addActionListener(new StyledEditorKit.FontFamilyAction("cambia_letra", "Verdana"));
}
}
}
JTextPane area;
JMenu fuente, estilo, tamaño;
}
Lo que vamos a hacer aquí es lo siguiente, tenemos la siguiente aplicación:
En el menú Tamaño vamos a crear varios submenús
(12, 16, 20 y 24) que nos van a permitir cambiar el tamaño del texto.
Para crear los radiobutton en los submenús
vamos a utilizar la clase JRadioButtonMenuItem, que como siempre
digo sería conveniente que revisarais la API de Java para saber más
acerca de esta clase, su uso, sus constructores, métodos…
Los radiobutton normalmente
suelen ir dentro de un grupo, por lo que primero vamos a crear el grupo y
después vamos a incluir los JRadioButton en este grupo, así que vamos al código
y después de la línea comentada que pone Tamaño
escribimos lo siguiente:
ButtonGroup tamaño_letra = new ButtonGroup();
JRadioButtonMenuItem doce = new JRadioButtonMenuItem("12");
JRadioButtonMenuItem dieciseis = new JRadioButtonMenuItem("16");
JRadioButtonMenuItem veinte = new JRadioButtonMenuItem("20");
JRadioButtonMenuItem veinticuatro = new JRadioButtonMenuItem("24");
tamaño_letra.add(doce);
tamaño_letra.add(dieciseis);
tamaño_letra.add(veinte);
tamaño_letra.add(veinticuatro);
Posteriormente, añadimos estos radiobutton al
menú:
tamaño.add(doce);
tamaño.add(dieciseis);
tamaño.add(veinte);
tamaño.add(veinticuatro);
Probamos:
Una vez añadidos hay que darles
funcionalidad, antes de añadirlos al menú Tamaño, tenemos que utilizar el
método ActionListener que nos va a permitir que dependiendo
del tamaño que elijamos, el texto cambie de tamaño, dentro de este método
utilizamos StyledEditorKit utilizando FonSizeAction al
que le vamos a pasar dos parámetros, el primero no hace nada, es una referencia
de lo que hace la acción y el segundo es el tamaño del texto:
doce.addActionListener(new StyledEditorKit.FontSizeAction("cambia_tamaño",
12));
dieciseis.addActionListener(new StyledEditorKit.FontSizeAction("cambia_tamaño",
16));
veinte.addActionListener(new StyledEditorKit.FontSizeAction("cambia_tamaño",
20));
veinticuatro.addActionListener(new StyledEditorKit.FontSizeAction("cambia_tamaño",
24));
Y con esto ya estaría finalizado, este sería el
trozo de código referente a los JRadioButtonMenuItem:
//--------Tamaño letra-----------------
ButtonGroup tamaño_letra = new ButtonGroup();
JRadioButtonMenuItem doce = new JRadioButtonMenuItem("12");
JRadioButtonMenuItem dieciseis = new JRadioButtonMenuItem("16");
JRadioButtonMenuItem veinte = new JRadioButtonMenuItem("20");
JRadioButtonMenuItem veinticuatro = new JRadioButtonMenuItem("24");
tamaño_letra.add(doce);
tamaño_letra.add(dieciseis);
tamaño_letra.add(veinte);
tamaño_letra.add(veinticuatro);
doce.addActionListener(new StyledEditorKit.FontSizeAction("cambia_tamaño",
12));
dieciseis.addActionListener(new StyledEditorKit.FontSizeAction("cambia_tamaño",
16));
veinte.addActionListener(new StyledEditorKit.FontSizeAction("cambia_tamaño",
20));
veinticuatro.addActionListener(new StyledEditorKit.FontSizeAction("cambia_tamaño",
24));
tamaño.add(doce);
tamaño.add(dieciseis);
tamaño.add(veinte);
tamaño.add(veinticuatro);
Os espero en el próximo post, sed
bueno y hasta pronto!
7.12 MENÚ CON CHECKBOX <<
>> 7.14 MENÚS EMERGENTES
No hay comentarios:
Publicar un comentario