Buenos días,
En anteriores ejercicios había
reducido el código creando un constructor para genera el JMEnu y JMenuItem. Pero
me faltaba poder pasar los iconos de los JMenItem con imágenes incorporada y
poner a la escucha a las diferentes partes del menú:
Constructor 1º
1. El nombre de la variable
JMenu que quiero cargar.
2. El JMenuBar a la que
quiero cargar mi JMenu (podría tener varias barras de menú por eso lo hice
sí).
4. Un array al que cargo
los nombres de las variables JMenuItem.
5. Un array al que cargo
los nombres que aparecerán en cada una de mis variables JMenuItem
Constructor 2º
1. El nombre de la variable
JMenu que quiero cargar.
2. El JMenuBar a la que
quiero cargar mi JMenu (podria tener varias barras de menú por eso lo hice
sí).
3. El texto que aparecera
en cada variable de mis JMenu
4. Un array al que cargo
los nobres de las variables JMenuItem.
5. Un array al que cargo
los nombres que aparecerán en cada una de mis variables JMenuItem.
6. Un array al que cargo las imágenes que aparecerán en nuestros JMenuitem (en mi caso los colores ).
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class
reducircodigo {
public static void main(String[] arg) {
Marco123
Marco321= new Marco123();
Marco321.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Marco321.setVisible(true);
}
}
class Marco123 extends JFrame{
public Marco123() {
setBounds(400,100,800,500);
add(new Lamina2());
}
class Lamina2 extends JPanel{
public Lamina2() {
LAMINA_TEXTO
L_text = new LAMINA_TEXTO();
LAMINA_BOTONES
L_BPT = new LAMINA_BOTONES();
LAMINA_BARRA
L_BAR = new LAMINA_BARRA();
setLayout(new BorderLayout());
L_text.setVisible(true);
add(L_text, BorderLayout.CENTER);
add(L_BPT,BorderLayout.WEST);
add(L_BAR,BorderLayout.NORTH);
}
class LAMINA_BARRA extends JPanel {
public LAMINA_BARRA() {
BarraMenu = new
JMenuBar();
Icono_rojo= new
ImageIcon("C:\\Users\\dagip\\Desktop\\ddddddddddd\\src/rojo.gif");
Icono_gris= new
ImageIcon("C:\\Users\\dagip\\Desktop\\ddddddddddd\\src/gris.gif");
Icono_verde= new
ImageIcon("C:\\Users\\dagip\\Desktop\\ddddddddddd\\src/verde.gif");
Icono_blanco= new
ImageIcon("C:\\Users\\dagip\\Desktop\\ddddddddddd\\src/blanco.gif");
constructorJMenu(Inicio,BarraMenu,"Inicio",(new
JMenuItem[] {GUARDAR,GUARDAR_COMO}),(new String[] {"GUARDAR","GUARDAR_COMO"}));
constructorJMenu(COP_PEG,BarraMenu,"COP_PEG",(new
JMenuItem[] { COPIAR,PEGAR}),(new String[] {"COPIAR","PEGAR"}));
constructorJMenu(tIPO_LETRA,BarraMenu,"TIPO LETRA",(new
JMenuItem[] { NEGRITA,CURSIVA,SIN_FORMATO}),(new String[] {"NEGRITA","CURSIVA","SIN
FORMATO"}));
constructorJMenu(TAMAÑO_LETRA,BarraMenu,"TAMAÑO_LETRA",(new
JMenuItem[] { ENTRE2,ENTRE10,ENTRE100,POR2,POR10,POR100}),(new String[] {"/ 2","/ 10","/ 100","X 2","X 10", "X 100"}));
constructorJMenu(VISTA,BarraMenu,"VISTA",(new
JMenuItem[] { GRIS,BLANCO,ROJO,VERDE}),(new String[] {"GRIS","BLANCO","ROJO","VERDE"}),(new ImageIcon[] {Icono_gris,Icono_blanco,Icono_rojo,Icono_verde}));
add(BarraMenu);
}
private void
constructorJMenu
(JMenu
NombreVariableJMenu,JMenuBar NombreDeLaBarra,String
TextoMostradoJmenu,JMenuItem[] Items_del_menu,String[] SumbmenusInicio) {
NombreVariableJMenu
= new JMenu(TextoMostradoJmenu);
for (int i =0; i<Items_del_menu.length;i++) {
Items_del_menu[i]= new JMenuItem (SumbmenusInicio[i]);
Items_del_menu[i].addActionListener(new
ConstructorDEoyebtes());
NombreVariableJMenu.add(Items_del_menu[i]);
}
NombreDeLaBarra.add(NombreVariableJMenu);
}
private void
constructorJMenu
(JMenu
NombreVariableJMenu,JMenuBar NombreDeLaBarra,String
TextoMostradoJmenu,JMenuItem[] Items_del_menu,String[] SumbmenusInicio,ImageIcon[]
foto) {
NombreVariableJMenu
= new JMenu(TextoMostradoJmenu);
for (int i =0; i<Items_del_menu.length;i++) {
Items_del_menu[i]= new JMenuItem (SumbmenusInicio[i],foto[i]);
Items_del_menu[i].addActionListener(new
ConstructorDEoyebtes());
NombreVariableJMenu.add(Items_del_menu[i]);
}
NombreDeLaBarra.add(NombreVariableJMenu);
}
ImageIcon Icono_rojo,Icono_gris,Icono_verde,Icono_blanco;
String SumbmenusInicio[];
JMenuItem[]
Items_del_menu;
JMenuBar BarraMenu;
JMenu Inicio,COP_PEG,tIPO_LETRA,TAMAÑO_LETRA,VISTA;
JMenuItem COPIAR,PEGAR,GUARDAR,GUARDAR_COMO,NEGRITA,CURSIVA,SIN_FORMATO,ENTRE2,ENTRE10,ENTRE100,POR2,POR10,POR100,GRIS,BLANCO,ROJO,VERDE;
}
///////////////////constructor de
oyentes//////////////////////////////
private class ConstructorDEoyebtes implements ActionListener {
public void actionPerformed(ActionEvent e) {
switch(e.getActionCommand()) {
case "NEGRITA": String Tex_ = Area_texto.getFont().getFamily();
int obten_TamañoLEtra =Area_texto.getFont().getSize();
Area_texto.setFont(new Font(Tex_,Font.BOLD,obten_TamañoLEtra));
break; case "CURSIVA":
Tex_ = Area_texto.getFont().getFamily();
obten_TamañoLEtra =Area_texto.getFont().getSize();
Area_texto.setFont(new Font(Tex_,Font.ITALIC,obten_TamañoLEtra));
break; case "SIN FORMATO":
Tex_ = Area_texto.getFont().getFamily();
obten_TamañoLEtra =Area_texto.getFont().getSize();
Dimension
T_letra=Area_texto.getSize();
Area_texto.setFont(new Font(Tex_,Font.PLAIN,obten_TamañoLEtra));
break; case "X 2":
Font
F = Area_texto.getFont();
String
obten_familiaLetra = F.getFamily();
int
obten_tipoLetra=F.getStyle();
obten_TamañoLEtra =F.getSize()*2; Area_texto.setFont(new Font(obten_familiaLetra,obten_tipoLetra,obten_TamañoLEtra)); break; case "X 10":
F = Area_texto.getFont();
obten_familiaLetra = F.getFamily();//familia (arial,arial
black...)
obten_tipoLetra=F.getStyle();//Estilo (negrita,cursiva,plana...)
obten_TamañoLEtra =F.getSize()*10; //tamaño fuente por
2 Area_texto.setFont(new Font(obten_familiaLetra,obten_tipoLetra,obten_TamañoLEtra));
break; case "X 100":
F = Area_texto.getFont();
obten_familiaLetraF.getFamily();
obten_tipoLetra=F.getStyle();
obten_TamañoLEtra =F.getSize()*25;
Area_texto.setFont(new Font(obten_familiaLetra,obten_tipoLetra,obten_TamañoLEtra));
break; case "/ 2":
F = Area_texto.getFont();
obten_familiaLetra = F.getFamily();
obten_tipoLetra=F.getStyle();
obten_TamañoLEtra =F.getSize()/2; Area_texto.setFont(new Font(obten_familiaLetra,obten_tipoLetra,obten_TamañoLEtra));
break; case "/ 10":
F = Area_texto.getFont();
obten_familiaLetra = F.getFamily();
obten_tipoLetra=F.getStyle();
obten_TamañoLEtra =F.getSize()/10;
Area_texto.setFont(new Font(obten_familiaLetra,obten_tipoLetra,obten_TamañoLEtra)); break; case "/ 100":
F = Area_texto.getFont();
obten_familiaLetra = F.getFamily();
obten_tipoLetra=F.getStyle();
obten_TamañoLEtra =F.getSize()/25;
Area_texto.setFont(new Font(obten_familiaLetra,obten_tipoLetra,obten_TamañoLEtra))
break; case "BLANCO":
Area_texto.setBackground(Color.WHITE);
break; case "VERDE":
Area_texto.setBackground(Color.green);
break; case "ROJO":
Area_texto.setBackground(Color.red);
break; case "GRIS":
Area_texto.setBackground(Color.LIGHT_GRAY);
break; case "GUARDAR":
break; case "GUARDAR_COMO":
break; case "COPIAR":
TextoEnPantalla = Area_texto.getText();
break; case "PEGAR":
Texto2= Area_texto.getText() + TextoEnPantalla;
Area_texto.setText(Texto2);
break;
}
}//fin action Listener
}//fin constructor oyentes
private class LAMINA_BOTONES extends JPanel{
public LAMINA_BOTONES() {
Lamina_botones= new
JPanel();
Lamina_botones.setLayout(new GridLayout(2,1));
Establece_corte_Linea= new
JButton("Set
Line Warp");
Establece_corte_Linea.setBackground(Color.LIGHT_GRAY);
//clase interna anónima
parara el metodo Actionlistener del boton
Establece_corte_Linea.addActionListener(new ActionListener() {
public void
actionPerformed(ActionEvent e) {
boolean saltar =! Area_texto.getLineWrap();
Area_texto.setLineWrap(saltar);
if (saltar) {
Establece_corte_Linea.setText("Quitar
SAlto Linea");
}else {
Establece_corte_Linea.setText("Poner
Salto Linea");
}
}
});
//Creamos un array al
que le cargamos las fuentes de nuestro
pc
String
Fuentes_de_mi_pc []=GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
//pasamos el array por
parametros al combo para cargar los datos
Tipo_letra= new JComboBox(Fuentes_de_mi_pc);
Tipo_letra.setSize(new Dimension(10,10));
Lamina_botones.add(Establece_corte_Linea);
// Creamos una clase interna anónima
a la que le indicamos que modifique
el tipo texto cuando lo cambiemos
//en JComboBox
Tipo_letra.addActionListener(new ActionListener() {
public void
actionPerformed(ActionEvent e) {
String
Tex_ = (String) Tipo_letra.getSelectedItem();
Area_texto.setFont(new Font(Tex_,10,20));
}
});
Lamina_botones.add(Tipo_letra);
add(Lamina_botones);
}
private JButton Establece_corte_Linea;
}
private class LAMINA_TEXTO
extends JPanel{
public LAMINA_TEXTO() {
Lamina_Texto = new
JPanel();
Area_texto= new
JTextArea("",25,45);
Area_texto.setLineWrap(true);
Scroll_texto= new
JScrollPane(Area_texto);
Lamina_Texto.add(Scroll_texto);
add(Lamina_Texto);
}
}
}
private JScrollPane Scroll_texto;
private JTextArea Area_texto;
private JComboBox Tipo_letra;
private JPanel Lamina_barra,Lamina_Texto,Lamina_botones;
private
String TextoEnPantalla,Texto2;
}
Espero que os sea útil. Si deseas CONTINUAR
No hay comentarios:
Publicar un comentario