IMPLEMENTACIÓN EN EL LENGUAJE JAVA DE UNA HERRAMIENTA DE EDICIÓN PARA XML SCHEMA CÓDIGO
|
|
- Francisco José Valdéz Iglesias
- hace 5 años
- Vistas:
Transcripción
1 IMPLEMENTACIÓN EN EL LENGUAJE JAVA DE UNA HERRAMIENTA DE EDICIÓN PARA XML SCHEMA CÓDIGO Departamento de Ingeniería de Sistemas y Automática. Área de Ingeniería Telemática. Escuela Superior de Ingenieros. Universidad de Sevilla PROYECTO FIN DE CARRERA REALIZADO POR: María del Pilar Jiménez Guijarro DIRIGIDO POR: D. Antonio J. Sierra Collado Sevilla, Febrero 2007
2
3 Annotation.java import java.awt.borderlayout; import java.awt.dimension; import java.awt.event.windowadapter; import java.awt.event.windowevent; import javax.swing.boxlayout; import javax.swing.buttongroup; import javax.swing.jdialog; import javax.swing.jlabel; import javax.swing.joptionpane; import javax.swing.jpanel; import javax.swing.jradiobutton; import javax.swing.jsplitpane; import javax.swing.jtextfield; import javax.swing.border.emptyborder; /** Clase encargada de la creación de un cuadro de * diálogo para la inserción de un elemento Annotation. Mª del Pilar Jiménez Guijarro. 1.0 */ public class Annotation extends JDialog { /* Esta clase crea el diálogo, pero no realiza la llamada a setvisible(true). * Esto es debido a que, si la llamada se hace desde dentro de esta clase * (ver linea de código comentada más adelante), y al utilizar setmodal(true), * al pulsar los botones del diálogo, no se detectan los eventos que deberían * producirse. Para evitar esto, hay que crear el objeto y llamar a * setvisible(true) en el punto de creación del objeto. */ JRadioButton doc; JRadioButton app; ButtonGroup group; JTextField jtf; JTextField lenguaje ; boolean cerrado = false; /** Constructor de la clase. */ Annotation(){ settitle("wizard: Annotation."); - 3 -
4 setmodal(true); inicializar(); /** Método encargado de la creación de los elementos * que forman el cuadro de diálogo. */ public void inicializar(){ /* Clase anonima para que la aplicacion se cierre al * pulsar la X (boton esquina superior derecha). */ this.addwindowlistener(new WindowAdapter(){ public void windowclosing(windowevent e){ cerrado = true; ); /* Creación de los elementos JPanel. */ JSplitPane sp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); JPanel pan1 = new JPanel(); JPanel pan2 = new JPanel(); BorderLayout bl1 = new BorderLayout(); pan1.setlayout(bl1); BoxLayout bl2 = new BoxLayout(pan2,BoxLayout.Y_AXIS); pan2.setlayout(bl2); pan2.setborder(new EmptyBorder(10, 30, 20, 10)); /* Creación de los Radio Button y del grupo de botones. */ String docstring = "documentation"; doc = new JRadioButton(docString); doc.setmnemonic('d'); doc.setactioncommand(docstring); doc.setselected(true); String appstring = "appinfo"; app = new JRadioButton(appString); app.setactioncommand(appstring); app.setmnemonic('a'); /* Creación de la etiqueta y el campo de texto para el lenguaje. */ JLabel jl = new JLabel(" xml:lang = "); lenguaje = new JTextField (2); lenguaje.setpreferredsize(new Dimension(10,5)); group = new ButtonGroup(); group.add(doc); - 4 -
5 group.add(app); AnnotationRL mylistener = new AnnotationRL(lenguaje); doc.addactionlistener(mylistener); app.addactionlistener(mylistener); /* Añadimos los elementos al panel. */ pan1.add(new JLabel(" Select one of the following elements:")); pan1.add(doc, BorderLayout.NORTH); pan1.add(jl, BorderLayout.WEST); pan1.add(lenguaje, BorderLayout.CENTER); pan1.add(app, BorderLayout.SOUTH); /* Campo de texto y etiqueta para el texto del elemento Annotation. */ jtf = new JTextField(); jtf.setpreferredsize(new Dimension(150,50)); JLabel lab = new JLabel("Insert your annotation s text: "); /* Añadimos los elementos al panel. */ pan2.add(lab); pan2.add(jtf); /* Introducimos los dos JPanel en el JSplitPane. */ sp.setleftcomponent(pan1); sp.setrightcomponent(pan2); sp.setdividerlocation(200); /* Se crea el array de objetos con el texto * introductorio y el splitpane anterior. */ JLabel intro = new JLabel("Fill in the following fields, please."); Object[] array = {intro, sp; /* Se crea el JOptionPane y se establece como * contenido del cuadro de diálogo. */ final String btnstring1 = "Enter"; final String btnstring2 = "Cancel"; Object[] options = {btnstring1, btnstring2; JOptionPane jop = new JOptionPane(array, JOptionPane. PLAIN_MESSAGE,JOptionPane.YES_NO_OPTION, null, options, options[0]); setcontentpane(jop); setdefaultcloseoperation(dispose_on_close); pack(); setsize(450, 200); - 5 -
6 setlocation(525,375); /* NO PONER setvisible(true); AQUI!!! Si se pone aquí en vez de desde * donde creamos el objeto, cuando se pone setmodal(true) se produce * un error: no reconoce las pulsaciones de botón.*/ /* Listeners para eventos Action y PropertyChange. */ TextFieldAL tfal = new TextFieldAL(jop); jtf.addactionlistener(tfal); lenguaje.addactionlistener(tfal); AnnotationPCL pcl = new AnnotationPCL(this, jop, jtf, lenguaje); jop.addpropertychangelistener(pcl); - 6 -
7 AnnotationPCL.java import java.beans.propertychangeevent; import java.beans.propertychangelistener; import javax.swing.jdialog; import javax.swing.joptionpane; import javax.swing.jtextfield; /** Clase que escucha cambios en las propiedades del cuadro * de diálogo creado por la clase Annotation. Mª del Pilar Jiménez Guijarro. 1.0 */ public class AnnotationPCL implements PropertyChangeListener { JDialog d; JOptionPane jop; JTextField jtf; JTextField lenguaje; final String btnstring1 = "Enter"; final String btnstring2 = "Cancel"; String typedtext = null; String typedtext2 = null; /** Constructor de la clase. */ AnnotationPCL(JDialog dialogo, JOptionPane option, JTextField textfield, JTextField lang){ d = dialogo; jop = option; jtf = textfield; lenguaje = lang; /* Se ejecuta si se produce un evento PropertyChange. * Hereda comentario de documentación. */ public void propertychange(propertychangeevent e) { String prop = e.getpropertyname(); - 7 -
8 if (d.isvisible() && (e.getsource() == jop) && (prop.equals(joptionpane.value_property) prop. equals(joptionpane.input_value_property))) { Object value = jop.getvalue(); if (value == JOptionPane.UNINITIALIZED_VALUE) { return; if (value.equals(btnstring1)) { typedtext = jtf.gettext(); typedtext2 = lenguaje.gettext(); else { /* Miramos si el campo de texto de lenguaje está activado * y si tiene texto, así como si el otro campo de texto * no esta vacio. Si se cumple, quitamos el diálogo de * pantalla. */ if (!typedtext.equals("") && lenguaje.isenabled() &&!typedtext2.equals("")) { d.setvisible(false); /* Si el campo de lenguaje no está activado, miramos * que el segundo campo de texto no esté vacío. */ else if (!typedtext.equals("") &&!lenguaje.isenabled()){ d.setvisible(false); else { /* Falta algún elemento de texto de los necesarios*/ JOptionPane.showMessageDialog(d," There"+ " is some text missing. \n Fill in " + "all the fields, please.","error", JOptionPane.ERROR_MESSAGE); /* Reseteamos el valor del JOptionPane. */ jop.setvalue(joptionpane. UNINITIALIZED_VALUE); /*Si cancelamos, no hacemos nada*/ jtf.settext(""); d.setvisible(false); - 8 -
9 AnnotationRL.java import java.awt.event.actionevent; import java.awt.event.actionlistener; import javax.swing.jtextfield; /** Clase que escucha las acciones realizadas sobre los * botones de radio de la clase Attribute. Mª del Pilar Jiménez Guijarro. 1.0 */ public class AnnotationRL implements ActionListener { String docstring = "documentation"; JTextField jtf; /** Constructor de la clase. */ AnnotationRL(JTextField lenguaje){ jtf=lenguaje; /** Activa o desactiva el campo de texto correspondiente * al lenguaje, asociado a la opción documentation de la * clase Attribute. */ public void actionperformed(actionevent e) { if (e.getactioncommand().equals(docstring)){ jtf.setenabled(true); else jtf.setenabled(false); - 9 -
10 Attribute.java import java.awt.gridlayout; import java.awt.event.windowadapter; import java.awt.event.windowevent; import javax.swing.jcheckbox; import javax.swing.jdialog; import javax.swing.jlabel; import javax.swing.joptionpane; import javax.swing.jpanel; import javax.swing.jtextfield; /** Clase encargada de la creación de un cuadro de * diálogo para la inserción de un elemento Attribute. Mª del Pilar Jiménez Guijarro. 1.0 */ public class Attribute extends JDialog { JTextField jtf1; JTextField jtf2; JTextField jtf3; JTextField jtf4; JTextField jtf5; JLabel jl1; JLabel jl2; JLabel jl3; JLabel jl4; JLabel jl5; JTextField lenguaje; boolean annotation; boolean cancelado = false; boolean cerrado = false; /** Constructor de la clase. */ Attribute(){ settitle("wizard: Attribute."); setmodal(true); inicializar();
11 /** Método encargada de la creación de los elementos * que forman el cuadro de diálogo. */ public void inicializar(){ /* Clase anonima para que la aplicacion se cierre al * pulsar la X (boton esquina superior derecha). */ this.addwindowlistener(new WindowAdapter(){ public void windowclosing(windowevent e){ cerrado = true; ); /* Se crean los elementos y se añaden al panel. */ JPanel pan1 =new JPanel(); GridLayout gl = new GridLayout(7,2); pan1.setlayout(gl); jl1 = new JLabel("name : "); jl2 = new JLabel("type : "); jl3 = new JLabel("id? : "); jl4 = new JLabel("use? : "); jl5 = new JLabel("value? : "); jtf1 = new JTextField(); jtf2 = new JTextField(); jtf3 = new JTextField(); jtf4 = new JTextField(); jtf5 = new JTextField(); pan1.add(jl1); pan1.add(jtf1); pan1.add(jl2); pan1.add(jtf2); pan1.add(jl3); pan1.add(jtf3); pan1.add(jl4); pan1.add(jtf4); pan1.add(jl5); pan1.add(jtf5); pan1.add(new JLabel ("")); pan1.add(new JLabel ("")); JCheckBox jcb = new JCheckBox("Add Annotation"); pan1.add(jcb); /* Se crea el array de objetos con el texto * introductorio y el panel anterior. */
12 JLabel intro = new JLabel("Fill in the following" + " fields, please. (? = optional )"); Object[] array = {intro, pan1; /* Se crea el JOptionPane y se establece como * contenido del cuadro de diálogo. */ final String btnstring1 = "Enter"; final String btnstring2 = "Cancel"; Object[] options = {btnstring1, btnstring2; JOptionPane jop = new JOptionPane(array, JOptionPane. PLAIN_MESSAGE,JOptionPane.YES_NO_OPTION, null, options, options[0]); setcontentpane(jop); setdefaultcloseoperation(dispose_on_close); pack(); setsize(260, 270); setlocation(525,375); /* Listeners para eventos Action y PropertyChange. */ TextFieldAL tfal = new TextFieldAL(jop); jtf1.addactionlistener(tfal); jtf2.addactionlistener(tfal); jtf3.addactionlistener(tfal); jtf4.addactionlistener(tfal); jtf5.addactionlistener(tfal); AttributePCL pcl = new AttributePCL(this, jop, jtf1, jtf2, jcb); jop.addpropertychangelistener(pcl);
13 AttributeGroup.java import java.awt.gridlayout; import java.awt.event.windowadapter; import java.awt.event.windowevent; import javax.swing.jcheckbox; import javax.swing.jdialog; import javax.swing.jlabel; import javax.swing.joptionpane; import javax.swing.jpanel; import javax.swing.jtextfield; /** Clase encargada de la creación de un cuadro de diálogo * para la inserción de un elemento AttributeGroup. Mª del Pilar Jiménez Guijarro. 1.0 */ public class AttributeGroup extends JDialog { JTextField jtf1; JTextField jtf2; JLabel jl1; JLabel jl2; boolean annotation; boolean cancelado = false; boolean cerrado = false; /** Constructor de la clase. */ AttributeGroup(){ settitle("wizard: AttributeGroup."); setmodal(true); inicializar(); /** Método encargado de la creación de los elementos * que forman el cuadro de diálogo. */ public void inicializar(){
14 /* Clase anonima para que la aplicacion se cierre al * pulsar la X (boton esquina superior derecha). */ this.addwindowlistener(new WindowAdapter(){ public void windowclosing(windowevent e){ cerrado = true; ); /* Se crean los elementos y se añaden al panel. */ JPanel pan1 =new JPanel(); GridLayout gl = new GridLayout(4,2); pan1.setlayout(gl); JLabel jl1 = new JLabel("Group s name : "); JLabel jl2 = new JLabel("Number of attributes : "); jtf1 = new JTextField(); jtf2 = new JTextField(); pan1.add(jl1); pan1.add(jtf1); pan1.add(jl2); pan1.add(jtf2); pan1.add(new JLabel ("")); pan1.add(new JLabel ("")); JCheckBox jcb = new JCheckBox("Add Annotation"); pan1.add(jcb); /* Se crea el array de objetos con el texto * introductorio y el panel anterior. */ JLabel intro = new JLabel("Fill in the following " + "fields, please. (? = optional )"); Object[] array = {intro, pan1; final String btnstring1 = "Enter"; final String btnstring2 = "Cancel"; Object[] options = {btnstring1, btnstring2; /* Se crea el JOptionPane y se establece como * contenido del cuadro de diálogo. */ JOptionPane jop = new JOptionPane(array, JOptionPane. PLAIN_MESSAGE,JOptionPane.YES_NO_OPTION, null, options, options[0]); setcontentpane(jop); setdefaultcloseoperation(dispose_on_close); pack();
15 setsize(270, 190); setlocation(525,375); /* Listeners para eventos Action y PropertyChange. */ TextFieldAL tfal = new TextFieldAL(jop); jtf1.addactionlistener(tfal); jtf2.addactionlistener(tfal); AttributeGroupPCL pcl = new AttributeGroupPCL( this, jop, jtf1, jtf2, jcb); jop.addpropertychangelistener(pcl);
16 AttributeGroupPCL.java import java.beans.propertychangeevent; import java.beans.propertychangelistener; import javax.swing.jcheckbox; import javax.swing.joptionpane; import javax.swing.jtextfield; /** Clase que escucha cambios en las propiedades del cuadro * de diálogo creado por la clase AttributeGroup. Mª del Pilar Jiménez Guijarro. 1.0 */ public class AttributeGroupPCL implements PropertyChangeListener { AttributeGroup d; JOptionPane jop; JTextField name; JTextField number; JCheckBox jcb; final String btnstring1 = "Enter"; final String btnstring2 = "Cancel"; String typedtext = null; String typedtext2 = null; /** Constructor de la clase. */ AttributeGroupPCL(AttributeGroup dialogo, JOptionPane option, JTextField nombre, JTextField num_att, JCheckBox box){ d = dialogo; jop = option; name = nombre; number = num_att; jcb = box; /* Se ejecuta si se produce un evento PropertyChange. * Hereda comentario de documentación.*/ public void propertychange(propertychangeevent e) {
17 String prop = e.getpropertyname(); if (d.isvisible() && (e.getsource() == jop)&& (prop.equals(joptionpane.value_property) prop. equals(joptionpane.input_value_property))) { Object value = jop.getvalue(); if (value == JOptionPane.UNINITIALIZED_VALUE) { return; if (value.equals(btnstring1)) { typedtext = name.gettext(); typedtext2 = number.gettext(); else { /* Miramos si los campos obligatorios contienen texto. */ if (!typedtext.equals("") &&!typedtext2.equals("")) { if(jcb.isselected()) d.annotation = true; d.setvisible(false); else { /* Falta algún elemento de texto de los necesarios*/ JOptionPane.showMessageDialog(d," There"+ " is some text missing. \n Fill in " + "all the fields, please.","error", JOptionPane.ERROR_MESSAGE); jop.setvalue(joptionpane. UNINITIALIZED_VALUE); /*Si cancelamos, no hacemos nada*/ d.cancelado = true; d.setvisible(false);
18 AttributePCL.java import java.beans.propertychangeevent; import java.beans.propertychangelistener; import javax.swing.jcheckbox; import javax.swing.joptionpane; import javax.swing.jtextfield; /** Clase que escucha cambios en las propiedades del cuadro * de diálogo creado por la clase Attribute. Mª del Pilar Jiménez Guijarro. 1.0 */ public class AttributePCL implements PropertyChangeListener { Attribute d; JOptionPane jop; JTextField name; JTextField type; JCheckBox jcb; final String btnstring1 = "Enter"; final String btnstring2 = "Cancel"; String typedtext = null; String typedtext2 = null; /** Constructor de la clase. */ AttributePCL(Attribute dialogo, JOptionPane option, JTextField nombre, JTextField tipo, JCheckBox box){ d = dialogo; jop = option; name = nombre; type = tipo; jcb = box; /* Se ejecuta si se produce un evento PropertyChange. * Hereda comentario de documentación. */ public void propertychange(propertychangeevent e) {
19 String prop = e.getpropertyname(); if (d.isvisible() && (e.getsource() == jop) && (prop.equals(joptionpane.value_property) prop. equals(joptionpane.input_value_property))) { Object value = jop.getvalue(); if (value == JOptionPane.UNINITIALIZED_VALUE) { return; if (value.equals(btnstring1)) { typedtext = name.gettext(); typedtext2 = type.gettext(); else { /* Miramos si los campos obligatorios contienen texto. */ if (!typedtext.equals("") &&!typedtext2.equals("")) { if(jcb.isselected()) d.annotation = true; d.setvisible(false); else { /* Falta algún elemento de texto de los necesarios*/ JOptionPane.showMessageDialog(d," There"+ " is some text missing. \n Fill in " + "all the fields, please.","error", JOptionPane.ERROR_MESSAGE); jop.setvalue(joptionpane. UNINITIALIZED_VALUE); /*Si cancelamos, no hacemos nada*/ d.cancelado = true; d.setvisible(false);
20 CodeDocument.java import java.util.*; import javax.swing.text.attributeset; import javax.swing.text.badlocationexception; import javax.swing.text.defaultstyleddocument; import javax.swing.text.element; /** Clase encargada del tratamiento del texto * que se inserta en un panel de edición. Mª del Pilar Jiménez Guijarro. 1.0 */ public class CodeDocument extends DefaultStyledDocument{ /* Almacena el valor del prefijo asignado al * espacio de nombres de XML Schema.*/ String prefijo; MyJEditorPane jep; /* Variable booleana para saber si estamos leyendo de un archivo, en cuyo * caso usaremos el insertstring de la clase padre, sin hacer ningún tipo * de comparación y con el AttributeSet que nos pasan como parametro. Si * no estamos leyendo de un archivo sino insertando caracteres por teclado * sí haremos las comprobaciones. */ boolean leer = false; /* Para almacenar las palabras clave a insertar. */ private String word = ""; /* Posición actual de inserción de texto. */ private int currentpos = 0; /* Vector que contiene las palabras clave de XML Schema. */ private Vector keywords = new Vector(); /* Modos en los que podemos encontrarnos al tratar el texto y variable * (mode) que almacena el modo en que estamos en cada instante.*/ public static int STRING_MODE = 10; public static int TEXT_MODE = 11; public static int PI_MODE = 12; public static int COMMENT_MODE = 13; private int mode = TEXT_MODE;
21 boolean insertando_varios = false; /* Se utiliza para, al poner un signo ">", no poner la etiqueta de * cierre salvo si lo que tenemos previamente es una palabra clave. */ boolean palabra_clave = false; /* Variables para almacenar el punto en que se encuentra el Caret y * ver si ha sido desplazado a un punto no contiguo a donde estaba.*/ int posicion_previa = 0; int posicion_aux; /* Variable para indicar que es el caracter ">", para que cuando sea cierre de * comentario o PI y vengamos de otro renglón NO LO PONGA EN ROJO. */ boolean cierre = false; boolean cierre_com = false; boolean cierre_pi = false; /* Cuentan el número de etiquetas de apertura y cierre de PI o comentario. */ int abre_comment = 0; int cierra_comment = 0; int abre_pi = 0; int cierra_pi = 0; /* ****************************************************** */ /* ****************** CONSTRUCTOR ******************* */ /* ****************************************************** */ /** Constructor de la clase. */ public CodeDocument(MyJEditorPane j) { jep = j; /* ****************************************************** */ /* **************** INSERCIÓN DE TEXTO **************** */ /* ****************************************************** */ /** Método sobrescrito:acepta cualquier longitud de * cadena y realiza el procesamiento de caracteres. */ public void insertstring(int offs, String str, AttributeSet a) throws BadLocationException{ posicion_previa = currentpos; if(!leer){
22 super.insertstring(offs, str, jep.normal); else int strlen = str.length(); if(strlen > 1) insertando_varios = true; int endpos = offs + strlen; int strpos; for (int i=offs;i<endpos;i++){ currentpos = i; strpos = i - offs; processchar(str.charat(strpos)); currentpos = offs; insertando_varios= false; super.insertstring(offs, str, a); /* ****************************************************** */ /* ********* PROCESAMIENTO DE CARACTERES ********** */ /* ****************************************************** */ /** Método que convierte el char que se le pasa como parámetro * a String y llama a proccesschar(string str). */ public void processchar(char strchar){ char[] chrstr = new char[1]; chrstr[0] = strchar; String str = new String(chrstr); processchar(str); /** Método que procesa cada caracter para ver en qué modo estamos, * a qué modo hay que pasar y cuales son las acciones a realizar. */ public void processchar(string str){ char strchar = str.charat(0); posicion_aux=posicion_previa + 1; /* CUIDADO: Lo que viene ahora se encarga de buscar comentarios * o PIs si hemos cambiado la posición del cursor. Estas * comprobaciones no las haremos cuando estamos insertando
23 * varios elementos a la vez, es decir, un string completo * (mediante un copy-paste por ejemplo), ya que insertstring * se encarga, en este caso, de que se compruebe si hay PI * o comentario al insertar así. */ if(!insertando_varios){ if(posicion_aux!= currentpos){ /* Reinicializamos estas variables antes de hacer * el tratamiento. */ cierre = false; cierre_com = false; cierre_pi = false; if (strchar == '>') cierre = true; /* Sólo válido para que, en el caso de tener "<!-" e * introducir "-", se retire lo anterior y se ponga * todo "<!--" de color verde. */ if (strchar == '-') checkforcomment(); buscar_comment(); if (mode == TEXT_MODE) buscar_pi(); else{ /* Si el caracter es ">", saldremos de la función * buscar_comment()en modo comentario. En ese * caso, si no se hace lo que sigue, escribiriamos * en verde (comentario). Con las lineas siguientes * se consigue que pasemos a ver si ese cierre * pertenece al cierre de un PI (?>), o si sólo * forma parte de un comentario o de un PI. */ if(!cierre_com && cierre_pi) buscar_pi(); if(mode == COMMENT_MODE){ switch (strchar){ case('>'):{ /* Ponemos ya a false la variable cierre. */ cierre = false; /*Para ver cuando cambiar el modo comentario. */ checkforcomment(); /* Si después de esta función seguimos en modo
24 * comentario es porque no era cierre, entonces * hay que escribir el ">" en color verde. Como * en el método insertstring ya ha sido insertado * el elemento, lo sustituimos en color verde * mediante insertcommentstring(). */ if(mode==comment_mode){ insertcommentstring(str, this.currentpos); break; default: insertcommentstring(str, this.currentpos); else if(mode == PI_MODE){ switch (strchar){ case('>'):{ /* Ponemos ya a false la variable cierre. */ cierre = false; /*Para ver cuando cambiar el modo PI*/ checkforpi(); else{ /* Si después de esta función seguimos en modo PI es * porque no era cierre, entonces hay que escribir el ">" en * color celeste. Como en el método insertstring ya ha sido * insertado el elemento, lo sustituimos en color celeste. */ if(mode==pi_mode){ insertpistring(str, this.currentpos); break; default: insertpistring(str, this.currentpos); switch (strchar){ case('<'):case('/'):{ char[] chrstr = new char[1]; chrstr[0] = strchar; insertopensign(new String(chrstr),currentPos); break; case (' '): case('\n'):case('>'):{ checkforkeyword();
25 if(strchar == '>'){ char[] chrstr = new char[1]; chrstr[0] = strchar; insertclosesign(new String(chrstr),currentPos); if (mode == STRING_MODE && strchar == '\n'){ mode = TEXT_MODE; break; case ('-'):{ checkforcomment(); break; case ('?'):{ checkforpi(); break; case ('"'):case('\''):{ inserttextstring(str, currentpos); checkforstring(); break; default: break; if (mode == TEXT_MODE){ checkforstring(); if (mode == STRING_MODE){ inserttextstring(str, this.currentpos); /* ****************************************************** */ /* ************** FUNCIONES DE BÚSQUEDA ************* */ /* ****************************************************** */ /** Método que cuenta el número de comillas simples o dobles en la línea
26 * en que nos encontramos y activa el modo String si es necesario.*/ public void checkforstring(){ int offs = currentpos; Element element = this.getparagraphelement(offs); String elementtext = ""; try{ /* Esta es la forma de obtener el texto que nos * interesa (una línea) desde el elemento párrafo. */ elementtext = this.gettext(element.getstartoffset(), element.getendoffset() - element.getstartoffset()); catch(exception ex){ System.err.println("no text"); int strlen = elementtext.length(); if (strlen == 0) return; int i = 0; if (element.getstartoffset() > 0){ /* Traducimos hacia atrás si es necesario: sólo comprobaremos * de donde empieza el elemento hasta el punto de inserción.*/ offs = offs - element.getstartoffset(); int quotecount = 0; int aposcount = 0; if ((offs >= 0) && (offs <= strlen-1)){ i = offs; while (i >0){ /* El bucle chile camina hacia atrás hasta y mientras * vamos contando las comillas simples y dobles. */ char charat = elementtext.charat(i); if ((charat == '"')){ quotecount ++; if ((charat == '\'')){ aposcount ++; i--; int rem = quotecount % 2; int rem2 = aposcount % 2; mode = (rem == 0 && rem2==0)? TEXT_MODE: STRING_MODE;
27 /** Método que busca si hay palabras clave en la línea y * la escribe en color azul en caso de encontrar alguna.*/ public void checkforkeyword(){ if (mode!= TEXT_MODE) { return; int offs = currentpos; Element element = this.getparagraphelement(offs); String elementtext = ""; try{ /* Esta es la forma de obtener el texto que nos * interesa (una línea) desde el elemento párrafo. */ elementtext = this.gettext(element.getstartoffset(), element.getendoffset() - element.getstartoffset()); catch(exception ex){ System.err.println("no text"); int strlen = elementtext.length(); if (strlen == 0) return; int i = 0; if (element.getstartoffset() > 0){ /* Traducimos hacia atrás si es necesario: sólo comprobaremos * de donde empieza el elemento hasta el punto de inserción.*/ offs = offs - element.getstartoffset(); if ((offs >= 0) && (offs <= strlen-1)){ i = offs; while (i >0){ /* El bucle chile camina hacia atrás hasta hasta que se * encuentre un elemento de los que buscamos. */ i--; char charat = elementtext.charat(i); if ((charat==' ') (i==0) charat=='<' charat==('/')){ if ((charat==' ') charat=='<' charat==('/')){ /* Para no coger el caracter limite: i++. */ i++; word = elementtext.substring(i, offs); String s = word.trim(); /* Aquí es donde realmente se compara con las * palabras clave almacenadas en el vector. */
28 if (keywords.contains(s)){ palabra_clave = true; insertkeyword(word, currentpos); break; /** Método que cambia a modo comentario o modo texto si es necesario, y * sustituye cierto texto en color verde mediante insertcommentstring(). */ public void checkforcomment(){ int offs = currentpos; Element element = this.getparagraphelement(offs); String elementtext = ""; try{ /* Esta es la forma de obtener el texto que nos * interesa (una línea) desde el elemento párrafo. */ elementtext = this.gettext(element.getstartoffset(), element.getendoffset() - element.getstartoffset()); catch(exception ex){ System.err.println("no text"); int strlen = elementtext.length(); if (strlen == 0) return; int i = 0; if (element.getstartoffset() > 0){ /* Traducimos hacia atrás si es necesario: sólo comprobaremos * de donde empieza el elemento hasta el punto de inserción.*/ offs = offs - element.getstartoffset(); /* Offset mayor o igual que tres para no tener elementos * negativos al tomar los elementos commentstartchar.*/ if ((offs >= 3) && (offs <= strlen-1)){ i = offs; char commentstartchar1 = elementtext.charat(i-3); char commentstartchar2 = elementtext.charat(i-2); char commentstartchar3 = elementtext.charat(i-1); char commentstartchar4 = elementtext.charat(i); if (commentstartchar1 == '<' && commentstartchar2 == '!' && commentstartchar3 == '-' && commentstartchar4 == '-'){
29 mode = COMMENT_MODE; insertcommentstring("<!--", currentpos-3); else if (commentstartchar2 == '-' && commentstartchar3 == '-' && commentstartchar4 == '>'){ mode = TEXT_MODE; insertcommentstring("-->", currentpos-2); /** Método que cambia a modo PI o modo texto si es necesario, y * sustituye cierto texto en color rojo mediante insertpistring(). */ public void checkforpi(){ int offs = currentpos; Element element = this.getparagraphelement(offs); String elementtext = ""; try{ /* Esta es la forma de obtener el texto que nos * interesa (una línea) desde el elemento párrafo. */ elementtext = this.gettext(element.getstartoffset(), element.getendoffset() - element.getstartoffset()); catch(exception ex){ ex.printstacktrace(); int strlen = elementtext.length(); if (strlen == 0) return; int i = 0; if (element.getstartoffset() > 0){ /* Traducimos hacia atrás si es necesario: sólo comprobaremos * de donde empieza el elemento hasta el punto de inserción.*/ offs = offs - element.getstartoffset(); /* Offset mayor o igual que uno para no tener elementos * negativos al tomar los elementos PIStartChar.*/ if ((offs >= 1) && (offs <= strlen-1)){ i = offs; char PIStartChar1 = elementtext.charat(i-1); char PIStartChar2 = elementtext.charat(i); if (PIStartChar1 == '<' && PIStartChar2 == '?'){ mode = PI_MODE;
30 this.insertpistring("<?", currentpos-1); else if (PIStartChar1 == '?' && PIStartChar2 == '>'){ mode = TEXT_MODE; this.insertpistring(">", currentpos); /** Método que busca comentario. Se utiliza en el caso * en que hayamos cambiado el cursor de posición.*/ public void buscar_comment(){ abre_comment = 0; cierra_comment = 0; int offs = currentpos; Element element = this.getparagraphelement(offs); String elementtext = ""; try{ elementtext = this.gettext(element.getstartoffset(), element.getendoffset() - element.getstartoffset()); catch(exception ex){ System.err.println("no text"); int strlen = elementtext.length(); if (strlen == 0) return; int i = 0; if (element.getstartoffset() > 0){ offs = offs - element.getstartoffset(); /*Offset mayor o igual que tres para no tener elementos negativos al * almacenar los elementos commentstartchar.*/ if ((offs >= 3) && (offs <= strlen-1)){ i = offs; while (i>=3){ char commentstartchar1 = elementtext.charat(i-3); char commentstartchar2 = elementtext.charat(i-2); char commentstartchar3 = elementtext.charat(i-1); char commentstartchar4 = elementtext.charat(i); if (commentstartchar1 == '<' && commentstartchar2-30 -
31 == '!' && commentstartchar3 == '-' && commentstartchar4 == '-'){ abre_comment ++; else if (commentstartchar2 == '-' && commentstartchar3 == '-' && commentstartchar4 == '>'){ cierra_comment ++; i--; if(cierre){ /* Retomo el texto, para ver si el cierre pertenece a la * etiqueta de cierre de un PI, a la de un comentario o * forma parte de alguno del PI o el comentario. Para ello * utilizaré dos variables, cierre_com y cierre_pi.*/ i = offs; char c1 = elementtext.charat(i-2); char c2 = elementtext.charat(i-1); char c3 = elementtext.charat(i); if (c1 == '-' && c2 == '-' && c3 == '>'){ cierre_com = true; cierre_pi = false; else if(c2 == '?' && c3 == '>'){ cierre_pi = true; cierre_com = false; else{ /* Caso en que el simbolo de cierre forma parte * de la PI o del comentario, pero no cierra * ninguno de esos elementos. */ cierre_com = false; cierre_pi = false; if ((abre_comment == cierra_comment) &&!cierre) mode = TEXT_MODE; else{ /* En el caso de que sea cierre, pero no cierre de * comentario, por ejemplo, insertar una etiqueta * de cierre a un elemento que hubiésemos olvidado * cerrar, no estaremos en modo comentario sino en * modo texto para cerrar la etiqueta en rojo y * añadir la etiqueta de cierre. (Ver buscar_pi(), * que realiza una comprobación más concreta. */ if(cierre &&!cierre_com) mode = TEXT_MODE; else
32 else mode = TEXT_MODE; mode = COMMENT_MODE; /** Método que busca PIs. Se utiliza en el caso * en que hayamos cambiado el cursor de posición.*/ public void buscar_pi(){ abre_pi = 0; cierra_pi = 0; int offs = currentpos; Element element = this.getparagraphelement(offs); String elementtext = ""; try{ elementtext = this.gettext(element.getstartoffset(), element.getendoffset() - element.getstartoffset()); catch(exception ex){ System.err.println("no text"); int strlen = elementtext.length(); if (strlen == 0) return; int i = 0; if (element.getstartoffset() > 0){ offs = offs - element.getstartoffset(); /* Offset mayor o igual que uno para no tener elementos * negativos al almacenar los elementos PIStartChar.*/ if ((offs >= 1) && (offs <= strlen-1)){ i = offs; while(i>=1){ char PIStartChar1 = elementtext.charat(i-1); char PIStartChar2 = elementtext.charat(i); if (PIStartChar1 == '<' && PIStartChar2 == '?'){ abre_pi++; else if (PIStartChar1 == '?' && PIStartChar2 == '>'){ cierra_pi ++;
33 i--; else if ((abre_pi == cierra_pi) &&!cierre) mode = TEXT_MODE; else{ if(cierre &&!cierre_pi &&!cierre_com){ /* Tenemos el elemento ">", pero no cierra * ni un comentario ni un PI. Entonces:*/ if(abre_pi!= cierra_pi) /* Estamos dentro de un PI*/ mode = PI_MODE; else if(abre_comment!= cierra_comment) /* Estamos dentro de un comentario!*/ mode = COMMENT_MODE; else /* Lo insertaremos en rojo. */ mode = TEXT_MODE; else if(cierre &&!cierre_pi) mode = TEXT_MODE; else mode = PI_MODE; mode = TEXT_MODE; /* ****************************************************** */ /* ************* FUNCIONES DE INSERCIÓN ************* */ /* ****************************************************** */ /** Método para insertar palabras clave en color azul. */ public void insertkeyword(string str, int pos){ try{ /* Eliminamos la palabra antigua y formateamos */ this.remove(pos - str.length(), str.length()); /* Reemplazamos con la misma palabra, pero con nuevo formato. * Debemos llamar al método de la superclase insertstring aqui, * de otro modo acabaríamos en un bucle infinito!*/ super.insertstring(pos - str.length(), str, jep.etiqueta); catch (Exception ex){
34 ex.printstacktrace(); /** Método para insertar texto entrecomillado en color rosa. */ public void inserttextstring(string str, int pos){ try{ this.remove(pos,str.length()); super.insertstring(pos, str, jep.valoratributo); catch (Exception ex){ ex.printstacktrace(); /** Método para insertar comentarios en color verde. */ public void insertcommentstring(string str, int pos){ try{ this.remove(pos,str.length()); super.insertstring(pos, str, jep.comentario); catch (Exception ex){ ex.printstacktrace(); /** Método para insertar PIs en color rojo. */ public void insertpistring(string st, int pos){ try{ this.remove(pos,st.length()); super.insertstring(pos, st, jep.declaracion_pi); catch (Exception ex){ ex.printstacktrace(); /** Método para insertar el símbolo de apertura de etiqueta en color rojo. */ public void insertopensign(string str, int pos){ try{ this.remove(pos,str.length());
35 super.insertstring(pos, str, jep.apertura); catch (Exception ex){ ex.printstacktrace(); /** Método para insertar el símbolo de cierre de etiqueta en color rojo. */ public void insertclosesign(string str, int pos){ try{ this.remove(pos,str.length()); super.insertstring(pos, str, jep.apertura); /* Si estoy insertando varios caracteres a la vez (paste), * no quiero que, si se trata de una etiqueta correcta, * se inserte el elemento de cierre de dicha etiqueta. */ if(!insertando_varios && palabra_clave){ etiqueta_cierre(); palabra_clave = false; mode = TEXT_MODE; catch (Exception ex){ ex.printstacktrace(); /** Método para insertar la etiqueta de cierre * para una etiqueta de apertura (si procede). */ public void etiqueta_cierre(){ /* Realizamos la búsqueda del texto que forma la etiqueta * (obviando todos los atributos que pueda haber). */ String st = ""; int offs = this.currentpos; Element element = this.getparagraphelement(offs); String elementtext = ""; try{ elementtext = this.gettext(element.getstartoffset(), element.getendoffset() - element.getstartoffset()); catch(exception ex){ ex.printstacktrace(); int strlen = elementtext.length(); if (strlen == 0) return;
36 int i = 0; if (element.getstartoffset() > 0){ offs = offs - element.getstartoffset(); if ((offs >= 0) && (offs <= strlen-1)){ i = offs; while (i >0){ i--; char charat = elementtext.charat(i); if(charat == '/') break; if(charat == ' ') /* Cuando encuentro un espacio, modifico la * variable offs que es el punto máximo del * elemento que tomaré en st para añadir * dentro de la etiqueta de cierre */ offs = i; if (charat == '<'){ i++; st = elementtext.substring(i, offs); try{ offs = this.currentpos+1; String apert = "</"; String cierre = ">"; super.insertstring(offs,apert, jep.apertura); offs += apert.length(); super.insertstring(offs, st, jep.etiqueta); offs += st.length(); super.insertstring(offs, cierre, jep.apertura); catch (Exception ex){ ex.printstacktrace(); break; /* ****************************************************** */ /* ***************** OTRAS FUNCIONES ***************** */ /* ****************************************************** */ /** Método que asigna el vector pasado como * parámetro a la variable keywords. */
37 public void setkeywords(vector akeywordlist){ if (akeywordlist!= null){ this.keywords = akeywordlist;
38 EventHandler.java import java.awt.event.actionevent; import java.awt.event.actionlistener; import javax.swing.joptionpane; /** Clase que escucha las acciones que el usuario realiza en la GUI. Mª del Pilar Jiménez Guijarro. 1.0 */ public class EventHandler implements ActionListener { Inicial i; /** Constructor de la clase. */ EventHandler(Inicial application) { i = application; /* Se ejecuta cuando se produce algún evento Action por las * acciones del usuario. Hereda comentario de documentación. */ public void actionperformed(actionevent e) { /* Salir. */ if (e.getsource() == i.exitmenu) { i.exit(); /* Abrir fichero (tanto en menú File como botón del toolbar). */ else if (e.getsource() == i.openmenu e.getsource() == i.openbutton) { i.openfile(false, null); /* Abrir fichero nuevo (tanto en menú File como botón del toolbar). */ else if (e.getsource() == i.newmenu e.getsource() == i.newbutton) { i.newfile(); /* Salvar. */ else if (e.getsource() == i.savemenu e.getsource() == i.savebutton) {
39 i.savefile(); /* Salvar Como. */ else if (e.getsource() == i.saveasmenu) { i.savefileas(); /* Cerrar un fichero. */ else if (e.getsource() == i.closemenu e.getsource() == i.closep) { i.closefile(); /* Cerrar todos. */ else if (e.getsource() == i.closeallmenu e.getsource() == i.closeallp){ i.closeallfiles(); /* Cerrar todos menos éste. */ else if (e.getsource() == i.closeallexceptmenu e.getsource() == i.closeallexceptp) { i.closeallexceptthis(); /* Refrescar. */ else if (e.getsource() == i.refreshtabmenu e.getsource() == i.refreshbutton) { i.refresh(); /* Refrescar y Salvar. */ else if (e.getsource() == i.refreshandsavemenu) { i.refreshandsave(); /* Si queremos ver el about del editor. */ else if (e.getsource() == i.abouteditormenu) { JOptionPane.showMessageDialog(i, " Lyon Editor 1.0\n" + "Realizado por Pilar Jiménez Guijarro", "About Lyon Editor", JOptionPane.INFORMATION_MESSAGE); /* Código añadido para "abrir reciente" */ else if (e.getsource() == i.jmi1) { i.openrecentfile(i.jmi1.gettext()); else if (e.getsource() == i.jmi2) { i.openrecentfile(i.jmi2.gettext());
40 else if (e.getsource() == i.jmi3) { i.openrecentfile(i.jmi3.gettext()); else if (e.getsource() == i.jmi4) { i.openrecentfile(i.jmi4.gettext()); /* Código añadido para la inserción de elementos. */ else if (e.getsource() == i.annotationmenu e.getsource() == i.annotationbutton) { i.annotation(); else if (e.getsource() == i.attributemenu e.getsource() == i.attributebutton) { i.attribute(); else if (e.getsource() == i.attributegroupmenu e.getsource() == i.attributegroupbutton) { i.attributegroup(); else if (e.getsource() == i.importmenu e.getsource() == i.importbutton) { i.importar(); else if (e.getsource() == i.includemenu e.getsource() == i.includebutton) { i.include();
41 Import.java import java.awt.dimension; import java.awt.gridlayout; import java.awt.event.windowadapter; import java.awt.event.windowevent; import javax.swing.jcheckbox; import javax.swing.jdialog; import javax.swing.jlabel; import javax.swing.joptionpane; import javax.swing.jpanel; import javax.swing.jsplitpane; import javax.swing.jtextfield; /** Clase encargada de la creación de un cuadro de * diálogo para la inserción de un elemento Import. Mª del Pilar Jiménez Guijarro. 1.0 */ public class Import extends JDialog { JTextField jtf1; JTextField jtf2; JTextField jtf3; boolean annotation; boolean cancelado = false; boolean cerrado = false; /* Constructor de la clase. */ Import(){ settitle("wizard: Import."); setmodal(true); inicializar(); /** Método encargado de la creación de los elementos * que forman el cuadro de diálogo. */ public void inicializar(){
42 /* Clase anonima para que la aplicacion se cierre al * pulsar la X (boton esquina superior derecha). */ this.addwindowlistener(new WindowAdapter(){ public void windowclosing(windowevent e){ cerrado = true; ); /* Creamos un JSplitPane, pues tendremos dos partes diferenciadas. */ JSplitPane sp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); sp.setpreferredsize(new Dimension(450,150)); /* Creamos los paneles y añadimos los elementos. */ JPanel pan1 =new JPanel(); JPanel pan2 =new JPanel(); GridLayout gl = new GridLayout(3,2); pan1.setlayout(gl); JLabel jl1 = new JLabel("id? : "); JLabel jl2 = new JLabel("namespace? : "); JLabel jl3 = new JLabel("schemaLocation? : "); jtf1 = new JTextField(); jtf2 = new JTextField(); jtf3 = new JTextField(); pan1.add(jl1); pan1.add(jtf1); pan1.add(jl2); pan1.add(jtf2); pan1.add(jl3); pan1.add(jtf3); JCheckBox jcb = new JCheckBox("Add Annotation"); pan2.add(jcb); /* Añadimos los paneles al JSplitPane. */ sp.setleftcomponent(pan1); sp.setrightcomponent(pan2); sp.setdividerlocation(250); /* Se crea el array de objetos con el texto * introductorio y el splitpane anterior. */ JLabel intro = new JLabel("Fill in the following " + "fields, please. (? = optional )"); Object[] array = {intro, sp; /* Se crea el JOptionPane y se establece como
43 * contenido del cuadro de diálogo. */ final String btnstring1 = "Enter"; final String btnstring2 = "Cancel"; Object[] options = {btnstring1, btnstring2; JOptionPane jop = new JOptionPane(array, JOptionPane. PLAIN_MESSAGE,JOptionPane.YES_NO_OPTION, null, options, options[0]); setcontentpane(jop); setdefaultcloseoperation(dispose_on_close); pack(); setsize(450, 200); setlocation(525,375); /* Listeners para eventos Action y PropertyChange. */ TextFieldAL tfal = new TextFieldAL(jop); jtf1.addactionlistener(tfal); jtf2.addactionlistener(tfal); jtf3.addactionlistener(tfal); ImportPCL pcl = new ImportPCL(this, jop, jcb); jop.addpropertychangelistener(pcl);
44 ImportPCL.java import java.beans.propertychangeevent; import java.beans.propertychangelistener; import javax.swing.jcheckbox; import javax.swing.joptionpane; /** Clase que escucha cambios en las propiedades del cuadro * de diálogo creado por la clase Import. Mª del Pilar Jiménez Guijarro. 1.0 */ public class ImportPCL implements PropertyChangeListener { String id; String namespace; String schemaloc; Import d; JOptionPane jop; final String btnstring1 = "Enter"; final String btnstring2 = "Cancel"; JCheckBox jcb; /* Constructor de la clase. */ ImportPCL(Import dialogo, JOptionPane option, JCheckBox box){ d = dialogo; jop = option; jcb = box; /* Se ejecuta si se produce un evento PropertyChange. * Hereda comentario de documentación. */ public void propertychange(propertychangeevent e) { String prop = e.getpropertyname(); if (d.isvisible() && (e.getsource() == jop) && (prop.equals(joptionpane.value_property) prop. equals(joptionpane.input_value_property))) {
45 Object value = jop.getvalue(); if (value == JOptionPane.UNINITIALIZED_VALUE) { return; if (value.equals(btnstring1)) { if(jcb.isselected()){ d.annotation = true; /* d.cancelado vale false -> * realizaremos las acciones! */ d.setvisible(false); else { /*Si cancelamos, no hacemos nada*/ d.annotation = false; d.cancelado = true; d.setvisible(false);
46 Include.java import java.awt.dimension; import java.awt.gridlayout; import java.awt.event.windowadapter; import java.awt.event.windowevent; import javax.swing.jcheckbox; import javax.swing.jdialog; import javax.swing.jlabel; import javax.swing.joptionpane; import javax.swing.jpanel; import javax.swing.jsplitpane; import javax.swing.jtextfield; /** Clase encargada de la creación de un cuadro de * diálogo para la inserción de un elemento Include. Mª del Pilar Jiménez Guijarro. 1.0 */ public class Include extends JDialog { JTextField jtf1; JTextField jtf2; boolean annotation; boolean cancelado = false; boolean cerrado = false; /** Constructor de la clase. */ Include(){ settitle("wizard: Include."); setmodal(true); inicializar(); /** Método encargado de la creación de los elementos * que forman el cuadro de diálogo. */ public void inicializar(){
47 /* Clase anonima para que la aplicacion se cierre al * pulsar la X (boton esquina superior derecha). */ this.addwindowlistener(new WindowAdapter(){ public void windowclosing(windowevent e){ cerrado = true; ); /* Creamos un JSplitPane, pues tendremos dos partes diferenciadas. */ JSplitPane sp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); sp.setpreferredsize(new Dimension(450,150)); /* Creamos los paneles y añadimos los elementos. */ JPanel pan1 =new JPanel(); JPanel pan2 =new JPanel(); GridLayout gl = new GridLayout(2,2); pan1.setlayout(gl); JLabel jl1 = new JLabel("id? : "); JLabel jl2 = new JLabel("schemaLocation : "); jtf1 = new JTextField(); jtf2 = new JTextField(); pan1.add(jl1); pan1.add(jtf1); pan1.add(jl2); pan1.add(jtf2); JCheckBox jcb = new JCheckBox("Add Annotation"); pan2.add(jcb); /* Añadimos los paneles al JSplitPane. */ sp.setleftcomponent(pan1); sp.setrightcomponent(pan2); sp.setdividerlocation(250); /* Se crea el array de objetos con el texto * introductorio y el splitpane anterior. */ JLabel intro = new JLabel("Fill in the following" + " fields, please. (? = optional )"); Object[] array = {intro, sp; /* Se crea el JOptionPane y se establece como * contenido del cuadro de diálogo. */ final String btnstring1 = "Enter"; final String btnstring2 = "Cancel"; Object[] options = {btnstring1, btnstring2;
48 JOptionPane jop = new JOptionPane(array, JOptionPane. PLAIN_MESSAGE,JOptionPane.YES_NO_OPTION, null, options, options[0]); setcontentpane(jop); setdefaultcloseoperation(dispose_on_close); pack(); setsize(450, 150); setlocation(525,375); /* Listeners para eventos Action y PropertyChange. */ TextFieldAL tfal = new TextFieldAL(jop); jtf1.addactionlistener(tfal); jtf2.addactionlistener(tfal); IncludePCL pcl = new IncludePCL(this, jop, jcb, jtf2); jop.addpropertychangelistener(pcl);
49 IncludePCL.java import java.beans.propertychangeevent; import java.beans.propertychangelistener; import javax.swing.jcheckbox; import javax.swing.joptionpane; import javax.swing.jtextfield; /** Clase que escucha cambios en las propiedades del cuadro * de diálogo creado por la clase Include. Mª del Pilar Jiménez Guijarro. 1.0 */ public class IncludePCL implements PropertyChangeListener { String id; String schemaloc; Include d; JOptionPane jop; JTextField jtf; String text; final String btnstring1 = "Enter"; final String btnstring2 = "Cancel"; JCheckBox jcb; /** Constructor de la clase. */ IncludePCL(Include dialogo, JOptionPane option, JCheckBox box, JTextField jtf_schema){ d = dialogo; jop = option; jcb = box; jtf = jtf_schema; /* Se ejecuta si se produce un evento PropertyChange. * Hereda comentario de documentación. */ public void propertychange(propertychangeevent e) { String prop = e.getpropertyname();
50 if (d.isvisible() && (e.getsource() == jop) && (prop.equals(joptionpane.value_property) prop. equals(joptionpane.input_value_property))) { Object value = jop.getvalue(); if (value == JOptionPane.UNINITIALIZED_VALUE) { return; if (value.equals(btnstring1)) { /* Sólo compruebo el texto de schemalocation. */ text = jtf.gettext(); else { /* En este caso, si el campo de texto correspondiente al * schemalocation está vacío, mostraremos un diálogo de * error ya que es un campo obligatorio. */ if (!text.equals("")) { if(jcb.isselected()){ d.annotation = true; /* d.cancelado vale false -> * realizaremos las acciones! */ d.setvisible(false); else { /* Falta el elemento de texto de schemalocation*/ JOptionPane.showMessageDialog(d," The field " + "schemalocation is REQUIRED. \n " + "Fill in at least this field, please.", "ERROR", JOptionPane.ERROR_MESSAGE); jop.setvalue(joptionpane. UNINITIALIZED_VALUE); /*Si cancelamos, no hacemos nada*/ d.annotation = false; d.cancelado = true; d.setvisible(false);
51 Inicial.java import javax.swing.action; import javax.swing.box; import javax.swing.imageicon; import javax.swing.jbutton; import javax.swing.jfilechooser; import javax.swing.jframe; import javax.swing.jmenu; import javax.swing.jmenubar; import javax.swing.jmenuitem; import javax.swing.joptionpane; import javax.swing.jpanel; import javax.swing.jpopupmenu; import javax.swing.jscrollpane; import javax.swing.jsplitpane; import javax.swing.jtabbedpane; import javax.swing.jtoolbar; import javax.swing.keystroke; import javax.swing.swingutilities; import javax.swing.uimanager; import javax.swing.text.defaulteditorkit; import javax.swing.text.document; import javax.swing.text.jtextcomponent; import javax.swing.undo.undomanager; import java.awt.borderlayout; import java.awt.container; import java.awt.cursor; import java.awt.insets; import java.awt.toolkit; import java.awt.event.actionlistener; import java.awt.event.keyevent; import java.awt.event.mouselistener; import java.awt.event.windowadapter; import java.awt.event.windowevent; import java.io.bufferedreader; import java.io.bufferedwriter; import java.io.file; import java.io.filereader; import java.io.filewriter; import java.util.hashtable;
52 /** Clase que inicializa la GUI, y se encarga de la realización de * acciones de apertura, cierre, salvaguarda, etc. de ficheros. Mª del Pilar Jiménez Guijarro. 1.0 */ public class Inicial extends JFrame{ static Inicial application; /* Diálogo de elección de archivos y Barra de Menu.*/ JFileChooser filechooser = null; JMenuBar menubar; /* Menus e Items de Menus para el Menu Inicial.*/ JMenu filemenu; JMenu aboutmenu; JMenuItem newmenu; JMenuItem openmenu; JMenu openrecentmenu; JMenuItem exitmenu; JMenuItem abouteditormenu; /* Menu e items para completar el menu inicial. ATENCIÓN!!! No se * inicializan aqui; aqui se definen para poderlos usar a lo largo de * todo el programa.*/ JMenuItem closemenu; JMenuItem closeallmenu; JMenuItem closeallexceptmenu; JMenuItem savemenu; JMenuItem saveasmenu; /* Lo mismo que lo anterior, pero para refresh.*/ JMenu refreshmenu; JMenuItem refreshtabmenu; JMenuItem refreshandsavemenu; JButton refreshbutton; /* Similar pero para Insert. */ JMenu insertmenu; JMenuItem annotationmenu; JMenuItem attributemenu; JMenuItem attributegroupmenu; JMenuItem complextypemenu; JMenuItem elementmenu; JMenuItem groupmenu; JMenuItem importmenu; JMenuItem includemenu; JMenuItem notationmenu; JMenuItem redefinemenu;
Desarrollo de Aplicaciones en Java INF 473
Desarrollo de Aplicaciones en Java INF 473 Desarrollo de Interfaces Gráficas Componentes Swing II Prof. José Miguel Rubio jose.rubio.l@ucv.cl jrubio@inf.ucv.cl PUCV Marzo 2008 0 Generación de código Diferencia
Más detallesÁngel Villa Brasero - Actividad Foro Unidad 2 26/11/ Clases de la aplicación. ApNumeroPerfecto.java. VentanaPrincipal.java
1. Clases de la aplicación ApNumeroPerfecto.java package numero_perfecto; import java.awt.dimension; import java.awt.toolkit; import javax.swing.jframe; import javax.swing.uimanager; public class ApNumeroPerfecto
Más detallesExamen de Programación II (Ingeniería Informática)
Examen de Programación II (Ingeniería Informática) Septiembre 2010 1) Lenguaje C (2 puntos) Escribir el módulo "elimina_substring" (ficheros elimina_substring.h y elimina_substring.c) que defina una única
Más detallesUnidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones
Unidad Didáctica 2 Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.3 Índice
Más detallesIC Programación Orientada a Objetos I. Programación de Interfaces Gráficas de Usuario (GUI) 2
IC 2003-1 5033 Programación Orientada a Objetos I 10 Programación de Interfaces Gráficas de Usuario (GUI) 2 1 INTRODUCCIÓN Es difícil pensar en que una aplicación desarrollada actualmente, sea atractiva
Más detallesDesarrollo de Aplicaciones en Java INF 473
Desarrollo de Aplicaciones en Java INF 473 Desarrollo de Interfaces Gráficas Componentes Swing Prof. José Miguel Rubio jose.rubio.l@ucv.cl jrubio@inf.ucv.cl PUCV Marzo 2008 0 Interfaces de usuario en java
Más detallesInterfaces Gráficas de Usuario
Interfaces Gráficas de Usuario Las componentes de una GUI desarrollada en Java son objetos de una clase provista por los paquetes AWT o Swing o de una clase derivada de ellas. Cada componente está caracterizada
Más detallesCentro Asociado Palma de Mallorca. Antonio Rivero Cuesta
Centro Asociado Palma de Mallorca Introducción Práctica de Programación Java Antonio Rivero Cuesta Sesión VI Interfaces Gráficas de Usuario... 9 Introducción... 10 Componentes... 13 Container... 16 Gestores
Más detallesPráctica 18c. Práctica 18c. José M. Ordax
Práctica 18c José M. Ordax chemi@javahispano.org 1 Copyright 2004 José M. Ordax Este documento puede ser distribuido solo bajo los términos y condiciones de la Licencia de Documentación de javahispano
Más detallesLenguajes de Programación Curso Práctica 8. Interfaces gráficas de usuario y Swing. Trabajo con modelos. 1. Un ejemplo 2. 2.
Objetivos Interfaces gráficas de usuario y Swing. Trabajo con modelos. Índice 1. Un ejemplo 2 2. Tareas 7 1 Como se comentó en las clases de teoría, el tratamiento de eventos en aquellos componentes Swing
Más detallesEjemplo de la Clase Persona
Ejemplo de la Clase Persona public class Persona // Declaración de atributos private String nombre; private int edad; // Constructor public Persona(String nombre, int edad) this.nombre = nombre; this.edad
Más detallesNetC.Time. Historia. Tito Agudelo Pedro Fula Yesid Gutierrez Oscar Munevar
Parcial 02 04/10/10 II Parcial Analisis de Algoritmos NetC.Time s Metodo Shell Sort Tito Agudelo Pedro Fula Yesid Gutierrez Oscar Munevar Historia El ordenamiento Shell (Shell sort en inglés) es un algoritmo
Más detalles1 Funcionalidades Java que se presentan en esta práctica
Índice 1 Funcionalidades Java que se presentan en esta práctica... 1 2 Una aplicación gráfica en Java... 1 3 El manejo de eventos en Java... 2 4 Tareas... 3 1 Funcionalidades Java que se presentan en esta
Más detallesProgramación de sistemas
Programación de sistemas Interfaces Gráficas I. Conceptos básicos II. Eventos Departamento de Ingeniería Telemática José Jesús García Rueda y Carlos Alario Hoyos
Más detallesPasos requeridos para establecer el manejo de eventos para un componente de GUI.
Manejo de eventos con clases anidadas. Por lo general un usuario interactúa con una GUI para indicar las tareas que ésta debe realizar. Por ejemplo, al escribir un mensaje de correo electrónico, pulsamos
Más detallesTransparencias de Java. Tema 7: AWT. Uploaded by Ingteleco
Transparencias de Java Tema 7: AWT Uploaded by Ingteleco http://ingteleco.webcindario.com ingtelecoweb@hotmail.com La dirección URL puede sufrir modificaciones en el futuro. Si no funciona contacta por
Más detallesVariables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.
Variables Una variable no es más que un nombre simbólico que identifica una dirección de memoria: Suma el contenido de la posición 3001 y la 3002 y lo almacenas en la posición 3003 vs. total = cantidad1
Más detallesimport javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*;
1 1 1 1 0 1 0 1 /* 1 - Desarrolle un programa que permita el ingreso de dos * números en controles de tipo JTextField y mediante dos * controles de tipo JRadioButton permita seleccionar si * queremos sumarlos
Más detalles2.1 Elementos gráficos en Java.
Practica0 de 1. Programa Java tipo consola public class Clase0 { public static void main(string[] args) { System.out.println("Hola Mundo"); System.out.println("Estamos en clase de Interfaces de Usuario");
Más detallesFormato para prácticas de laboratorio
CARRERA PLAN DE ESTUDIO CLAVE ASIGNATURA NOMBRE DE LA ASIGNATURA IC 2003-1 5033 Programación Orientada a Objetos I PRÁCTICA No. 10 LABORATORIO DE Ingeniero en Computación y Licenciado en Sistemas Computacionales
Más detallesPráctica 5. Fecha límite de entrega: viernes, 14 de diciembre
Algoritmos http://www.lfcia.org/alg/ 2007-2008 Ingeniería Informática Ingeniería Técnica de Informática de Gestión Práctica 5 Fecha límite de entrega: viernes, 14 de diciembre Implementación de un Diccionario
Más detallesUSO DE LOS OBJETOS JLABEL, JTEXTFIELD Y JBUTTON
USO DE LOS OBJETOS JLABEL, JTEXTFIELD Y JBUTTON Una aplicación sin usar Formulario A continuación vamos a desarrollar una aplicación sencilla que permita calcular el área del triángulo dado los valores
Más detallesAgenda. Contenedores y componentes
Agenda Tipos de objetos y clases de la GUI Guía detallada para crear una interfaz gráfica de usuario Guía detallada para la gestión de eventos Problema 1 del boletín 5 Problema 2 del boletín 5 Contenedores
Más detallesProgramación Avanzada. Práctica de uso de excepciones Una forma de implementarlo.
Práctica de uso de excepciones Una forma de implementarlo. A continuación se muestran las dos clases solicitadas en la práctica de Excepciones. Los métodos promedio y frecuencias se realizaron de manera
Más detallesDiseño y Programación Orientados a Objetos 29 de Abril de Primer Certamen
Primer Certamen Primera parte, sin apuntes (30 minutos; 1/3 de la nota): 1.- Responda brevemente y entregue en hoja con su nombre. a. Al redefinir un método en una subclase, es posible retornar un objeto
Más detallesIngeniería del Software Separación entre Presentación y Lógica del Negocio
Introducción En este laboratorio desarrollaremos una aplicación que verifica si una cuenta y un password son correctos. En dicha aplicación la presentación y la lógica del negocio se definirán en dos capas
Más detallesProgramación Orientada a Objetos
Programación Orientada a Objetos Tema 5: Desarrollo de interfaces gráficas de usuario Tema 5-2: Conceptos avanzados de SWING Contenidos Tema 5-2: Conceptos avanzados de SWING 1. COMPONENTES AVANZADOS 2.
Más detalles7.- ANEXOS. Anexo 1.-Diagramas uml LISTADO DE CLASES EN UML. Clase P1. Clase FrameAWT
7.- ANEXOS. Anexo 1.-Diagramas uml LISTADO DE CLASES EN UML. Clase P1 Clase FrameAWT 76 Clase Constantes ClasePanelCentral Clase Mimenubar Clase Mimenu 77 Clase JButFuente Clase JButCola Clase JButServidor
Más detallesAplicaciones de Escritorio
Aplicaciones de Escritorio Interfaces Gráficas con Java Disertantes: Ing. Rasjido, José. AdeS Montenegro, Cristian. Agenda Interfaz Grafica de Usuario Interfaz Grafica de Usuario Aplicaciones de escritorio
Más detallesPROGRAMACIÓN EN JAVA. { una línea para definir, crear o ejecutar ; }
PROGRAMACIÓN EN JAVA { una línea para definir, crear o ejecutar ; } JFC Y API SPECIFICATIONS OBJECT INTERFACE ABSTRACT IMPLEMENTS EXTENDS NEW EXTENDS (Hasta que una clase derivada deje de ser ABSTRACT)
Más detallesInstrucción de selección múltiple switch.
Instrucción de selección múltiple switch. Java cuenta con la instrucción switch de selección múltiple para realizar distintas acciones, con base en os posibles valores de una variable o expresión entera.
Más detallesLaboratorio de Redes de Comunicaciones Recursos de Sistema en Java
Laboratorio de Redes de Comunicaciones Recursos de Sistema en Java Properties System Runtime Swing Properties (I) Un property define atributos de forma persistente. Son adecuados cuando los valores de
Más detallesALGORITMICA Y PROGRAMACION POR OBJETOS I
ALGORITMICA Y PROGRAMACION POR OBJETOS I Nivel 5 Construyendo la Interfaz Gráfica Marcela Hernández Hoyos Motivación Interfaz usuario Modelo del mundo Usuario Único medio de comunicación entre el usuario
Más detallesimport java.applet.*; import java.awt.*; import java.awt.event.*;
/* Conway s Game Of Life (in Spanish) Juego de la Vida v. 0.1 implementacion de Henrik Mitsch (henx@bigfoot.com) probablemente online en http://henx.home.dhs. org/juegodelavida.html */ import java.applet.*;
Más detallesProgramación de sistemas
Programación de sistemas Interfaces Gráficas I. Conceptos básicos II. Eventos Departamento de Ingeniería Telemática José Jesús García Rueda y Carlos Alario Hoyos
Más detallesPROGRAMACION I Archivos directos
PROGRAMACION I Archivos directos Un archivo relativo (directo) consiste en una colección de registros de longitud fija almacenados uno al lado del otro en un dispositivo de almacenamiento de acceso directo.
Más detallesAPELLIDOS:... NOMBRE:... GRUPO:... NÚMERO DE EXPEDIENTE:...
Cuadernillo de examen ASIGNATURA Laboratorio de Sistemas Operativos Abiertos (Java) CÓDIGO 321 CONVOCATORIA Extraordinaria de Septiembre de 2003 PLAN DE ESTUDIOS 1996 ESPECIALIDAD Sistemas CURSO 2002/2003
Más detallesSoluciones al Examen de Fundamentos de Computadores y Lenguajes
Soluciones al Examen de Fundamentos de Computadores y Lenguajes Cuestiones (5 cuestiones, 5 puntos en total) Examen Final. Septiembre 2003 1) Se dispone del siguiente array de números reales ya creado.
Más detallesInterfaces gráficas en Java GUIs Graphical User Interface
Diseño Y Aplicaciones de Sistemas Distribuidos Interfaces gráficas en Java GUIs Graphical User Interface Joan Vila DISCA / UPV Departament d Informàtica de Sistemes i Computadors Universitat Politècnica
Más detallesSistema de Archivos en Java
David González Segundo SISTEMAS OPERATIVOS ICO-16 Fecha: 27/Octubre/2014 Sistema de Archivos en Java Propósito: El alumno elaborara un programa en el que representa el sistema de archivos que permita guardar,
Más detallesEstructura de las Aplicaciones Orientadas a Objetos El patrón Modelo-Vista-Controlador (MVC)
Estructura de las Aplicaciones Orientadas a Objetos El patrón Modelo-Vista-Controlador (MVC) Programación Orientada a Objetos Facultad de Informática Dep. Ingeniería del Software e Inteligencia Artificial
Más detallesInterfaces gráficas. Jose Jesus García Rueda
Interfaces gráficas Jose Jesus García Rueda Introducción Qué son las interfaces gráficas? Ejemplos bien conocidos Vamos a programar una: Colores.java Conceptos básicos Aplicación gráfica. Contenedores.
Más detallesCreemos una GUI para la siguiente tabla de la base de datos.
Consideración en el diseño de una GUI: Debe ser intuitiva Definir los modos de interacción: Flexibles y adecuados Dar opciones de interrumpir una acción, volver a ejecutar una acción Pasos repetidos: macros
Más detallesUniversidad Carlos III de Madrid Repositorio institucional e-archivo Trabajos acadømicos http://e-archivo.uc3m.es Proyectos Fin de Carrera 2012-03 Algoritmos y videojuegos Mart nez Ferrari, Mar a del Carmen
Más detallesEJERCICIO GUIADO. JAVA: DISEÑO DE FORMULARIOS DESDE CÓDIGO
EJERCICIO GUIADO. JAVA: DISEÑO DE FORMULARIOS DESDE CÓDIGO La Ventana de Diseño La ventana de diseño es una gran herramienta que nos permite diseñar formularios de forma relativamente sencilla. Simplemente
Más detallesSoluciones al Examen de Fundamentos de Computadores y Lenguajes
Soluciones al Examen de Fundamentos de Computadores y Lenguajes Cuestiones (5 cuestiones, 5 puntos en total) Examen Parcial. Junio 2004 1) Se desea crear una clase para hacer cálculos sobre el movimiento
Más detallesINTERFACES GRÁFICAS. Algoritmia y Programación
Algoritmia y Programación CONTENIDO GUI s (Graphic User Interfaces) Qué son? Componentes Layouts Eventos Editor Componentes Layouts Eventos Slide 2 Qué son? Una interfaz gráfica de usuario (GUI) presenta
Más detallesUniversidad de los Andes Ingeniería de Sistemas y Computación
Universidad de los Andes Ingeniería de Sistemas y Computación ISIS1205 - Algorítmica y Programación por Objetos II 2006-1 Hoja de Trabajo sobre los menus El objetivo de este taller es aprender a utilizar
Más detallesIntroducción a Java. Fernando Cerezal López. 24 Noviembre 2005
24 Noviembre 2005 disponibles de acceso public private protected de tipo static abstract final modificadores más avanzados que no vamos a ver... Clase Sintaxis modificadores class nombreclase{} Tipos primitivos
Más detallesSoluciones al Examen de Fundamentos de Computadores y Lenguajes
Soluciones al Examen de Fundamentos de Computadores y Lenguajes Cuestiones (5 cuestiones, 5 puntos en total) Examen Parcial. Junio 2005 1) Escribir una clase con un atributo privado que sea un array de
Más detallesProblema 1 (2 puntos)
Programación de Sistemas Grado en Ingeniería de Sistemas de Comunicaciones y Grado en Ingeniería Telemática Leganés, 21 de marzo de 2014 Duración de la prueba: 75 min Problema 1 (2 puntos) Examen parcial
Más detallesProgramación Basada en Eventos
Programación Basada en Eventos La construcción de una GUI utiliza un modelo de programación basado en eventos. En este modelo el orden en el cual se ejecutan las instrucciones de un programa va a quedar
Más detallesHERENCIA (2ª parte) En Java todas las clases derivan de otra, aunque no se diga explícitamente.
HERENCIA (2ª parte) Lenguajes de Programación - Orientación a Objetos: Herencia 2ª parte 1 Object En Java todas las clases derivan de otra, aunque no se diga explícitamente. Object: Es el nombre de la
Más detallesProgramación Orientada a Objetos (Grado en Ingeniería Informática y Grado en Ingeniería en Tecnologías de la Información - UNED)
Examen de Ejemplo Programación Orientada a Objetos (Grado en Ingeniería Informática y Grado en Ingeniería en Tecnologías de la Información - UNED) Parte Teórica (2,5 puntos). La respuesta correcta se indica
Más detallesConstrucciones del Lenguaje Java
Construcciones del Lenguaje Java Autor: Juan Alberto López Cavallotti Versión de Java: 5 / 6 Comentarios Comentario de Línea Comentario Multilínea //Esto es un comentario. /* Esto comenta varias lineas.
Más detallesTema 4. Control de flujo. Programación Programación - Tema 4: Control de Flujo
Tema 4 Control de flujo Programación 2015-2016 Programación - Tema 4: Control de Flujo 1 Tema 4. Control de flujo Introducción. Estructuras condicionales. Estructuras de repetición. Programación - Tema
Más detallesEstructura de datos y Programación
Estructura de datos y Programación Tema: Conceptos Básicos- Estructuras de control - Arreglos Ing. Analia Méndez Ing. Raquel Zarco Año: 2012 ELEMENTOS DE UN PROGRAMA EN JAVA El programa Java consta de
Más detallesPARTE TEÓRICA - TEST [2,5 PUNTOS]:
UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA 71901072 PROGRAMACIÓN ORIENTADA A OBJETOS (GRADO EN INGENIERÍA INFORMÁTICA / TECNOLOGÍAS DE LA INFORMACIÓN)
Más detallesProgramación Avanzada. Juan Manuel Fernández. Curso 2011 Ejemplo de uso de sockets desde aplicaciones visuales. Usan un hilo en banco.
Programación Avanzada. Juan Manuel Fernández. Curso 2011 Ejemplo de uso de sockets desde aplicaciones visuales. Usan un hilo en banco. El software que se muestra es un ejemplo sin pulir donde se muestra
Más detallesConstruir una Interfaz Gráfica
Construir una Interfaz Gráfica JAVA, permite al programador: -Diseñar y programar en interfaces gráficas de usuario en forma rápida y sencilla. -Cuenta con dos paquetes de clases predefinidos que brindan
Más detallesIntroducción a Java LSUB. 30 de enero de 2013 GSYC
Introducción a Java LSUB GSYC 30 de enero de 2013 (cc) 2013 Laboratorio de Sistemas, Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento - NoComercial
Más detallesFUNDAMENTOS DE INFORMÁTICA
ÁREA DE LENGUAJES Y SISTEMAS INFORMÁTICOS DEPARTAMENTO DE INFORMÁTICA E INGENIERÍA DE SISTEMAS ESCUELA DE INGENIERÍA Y ARQUITECTURA FUNDAMENTOS DE INFORMÁTICA 1ª CONVOCATORIA (16-junio-2011) Ejercicio
Más detallesUSO DE LOS OBJETOS JLABEL, JTEXTFIELD Y JBUTTON
USO DE LOS OBJETOS JLABEL, JTEXTFIELD Y JBUTTON Una aplicación sin usar Formulario A continuación vamos a desarrollar una aplicación sencilla que permita calcular el área del triángulo dado los valores
Más detallesIntroducción a la Programación Orientada a Objetos
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS GUI Ecapsulamiento, clases asociadas Dr. Luciano H. Tamargo http://cs.uns.edu.ar/~lt Depto. de Ciencias e Ingeniería de la Computación Universidad Nacional
Más detallesAplicaciones gráficas en Java Librería Swing
Aplicaciones gráficas en Java Librería Swing Sumario: Breve introducción al paquete Swing Tipos de clases del paquete Definición y manejo de contenedores, diálogos y layouts Diseño mediante IDE (Eclipse)
Más detallesSolucion al Examen de Fundamentos de Computadores y Lenguajes
Solucion al Examen de Fundamentos de Computadores y Lenguajes Cuestiones (5 cuestiones, 5 puntos en total) Examen Parcial. Junio 2006 1) Escribir una clase que permita almacenar una lista de jugadores
Más detallesPROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación:
Examen de Java Nombre: DNI: Titulación: 1. Cómo podemos compilar desde la línea de comandos la clase Java A que utiliza una librería empaquetada bd.jar? 2. Indica si es correcto el siguiente código. Justifica
Más detallesE1. Práctica UF2406: El ciclo de vida del desarrollo de aplicaciones
E1. Práctica UF2406: El ciclo de vida del desarrollo de aplicaciones CALCULADORA Se trata de implementar una aplicación que ofrezca el interfaz y el comportamiento de una calculadora sencilla. El interfaz
Más detallesIntroducción a Python Qué es Python?
Introducción a Python Qué es Python? Python es un lenguaje de programación interpretado cuya filosofía hace hincapié en una sintaxis que favorezca un código legible. Se trata de un lenguaje de programación
Más detallesTema 7.- Fundamentos de la Programación Orientada a Objetos
Tema 7.- Fundamentos de la Programación Orientada a Objetos 7 de enero de 2014 Objetivos Saber definir clases propias. Saber crear objetos de una clase determinada e interactuar con ellos (Problema 1).
Más detallesQué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +.
APUNTES DE JAVA Agenda Bienvenida Conociendo Java La Maquina Virtual Descargar e instalar el compilador El entorno de trabajo El paradigma de la programación orientada a objetos Qué es Java? Un lenguaje
Más detallesExamen escrito de Programación 1
Examen escrito de Programación 1 Escuela de Ingeniería y Arquitectura Departamento de Informática e Ingeniería de Sistemas 12 de septiembre de 2013 Disponer sobre la mesa en lugar visible un documento
Más detallesExamen parcial Convocatoria de junio de 2005 FUNDAMENTOS DE LA PROGRAMACIÓN
EJERCICIO 1 (1.5 puntos) Diseñe un conjunto de casos de prueba adecuado para comprobar el funcionamiento de un método encargado de calcular la duración de una llamada telefónica. Entradas Hora de inicio
Más detallesCarlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas
2 - Introducción al lenguaje Java, identificadores y comentarios. Carlos Montenegro Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 1. Introducción: Java tiene como todos
Más detallesFederico Peinado
Federico Peinado www.federicopeinado.es Depto. de Ingeniería del Software e Inteligencia Artificial disia.fdi.ucm.es Facultad de Informática www.fdi.ucm.es Universidad Complutense de Madrid www.ucm.es
Más detallesSolución al Examen de Fundamentos de Computadores y Lenguajes
Solución al Examen de Fundamentos de Computadores y Lenguajes Cuestiones (5 cuestiones, 5 puntos en total) Examen Final. Septiembre 2006 1) Se dispone de la siguiente clase enumerada. Escribir un método,
Más detallesProgramación Avanzada, curso 2011 Juan Manuel Fernández Ejemplo muy simple del uso de Tablas
Programación Avanzada, curso 2011 Juan Manuel Fernández Ejemplo muy simple del uso de Tablas import javax.swing.swingutilities; import java.awt.borderlayout; import javax.swing.jpanel; import javax.swing.jframe;
Más detallesCONSTRUIR INTERFACES GRAFIC I AS D E USUARIO I O (GUI) I 1
CONSTRUIR INTERFACES GRAFICAS DE USUARIO (GUI) 1 Un GUI se construye mediante componentes que se ubican en la pantalla. Los componentes se representan mediante objetos. La distribución de los componentes
Más detallesCentro Asociado Palma de Mallorca. Antonio Rivero Cuesta
Centro Asociado Palma de Mallorca Antonio Rivero Cuesta La Sintaxis de Java I... 5 Tipos de datos... 6 Tipos de datos simples... 7 Operadores... 11 Operadores Aritméticos... 12 Operadores relacionales...
Más detallesInstituto Tecnológico de Celaya
ELEMENTOS BÁSICOS DE C++: DECLARACIÓN DE VARIABLES A través de operaciones aritméticas (suma, resta, etc.) y lógicas (por ejemplo, comparaciones) los programas manipulan datos tales como números y caracteres.
Más detallesProgramación de sistemas
Programación de sistemas Interfaces Gráficas I. Conceptos básicos II. Eventos Julio Villena Román MATERIALES BASADOS EN EL TRABAJO DE DIFERENTES AUTORES: José Jesús García Rueda,
Más detallesINGRESAR DATOS CON UN CONTROL VISUAL EN JAVA. CLASE JTEXTFIELD Y MÉTODO GETTEXT. EJEMPLOS (CU00928C)
APRENDERAPROGRAMAR.COM INGRESAR DATOS CON UN CONTROL VISUAL EN JAVA. CLASE JTEXTFIELD Y MÉTODO GETTEXT. EJEMPLOS (CU00928C) Sección: Cursos Categoría: Lenguaje de programación Java nivel avanzado I Fecha
Más detallesAplicaciones Java. Juan Manuel Fernández Peña Curso 2011, 2013
Aplicaciones Java Juan Manuel Fernández Peña Curso 2011, 2013 Aplicación Una aplicación es una colección de clases y recursos adicionales, con un punto de inicio. El punto de inicio está dado por el método
Más detallesGUÍA DE LABORATORIO 5 ARREGLOS DE UNA DIMENSIÓN
GUÍA DE LABORATORIO 5 ARREGLOS DE UNA DIMENSIÓN INTRODUCCION Un arreglo es una colección de variables del mismo tipo, referidos por un nombre común. En Java, los arreglos tienen una o más dimensiones,
Más detallesComponentes Swing. Las clases cuyo nombre comienza por J forman parte de Swing. Todas las demás están incluidas en AWT (Abstract Window Toolkit)
Componentes Swing Las clases cuyo nombre comienza por J forman parte de Swing. Todas las demás están incluidas en AWT (Abstract Window Toolkit) Component es una clase abstracta que representa a cualquier
Más detallesSEMINARIO DE DQL CON PHP Y MYSQL
SEMINARIO DE DQL CON PHP Y MYSQL Índice del Seminario Instalación del paquete XAMPP en Windows Instalación de directorios virtuales. Creación y ejecución de la primera pagina PHP. Fundamentos de PHP Estructura
Más detallesUnidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos
Unidad Didáctica 3 Tipos genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Definición de tipo genérico Hablamos de un tipo genérico cuando el tipo en cuestión depende
Más detallesColas. 5.1 Implementación
Capítulo 5 Colas Las colas al igual que las pilas son un tipo especial de listas en las cuales los elementos se insertan por un lado y se eliminan por el otro. Es decir se sacan en el mismo orden en que
Más detallesIntroducción a la Programación Orientada a Objetos
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A S GUI Objetos y s Dr. Luciano H. Tamargo http://cs.uns.edu.ar/~lt Depto. de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur, Bahía Blanca
Más detallesGOBIERNO DEL PRINCIPADO DE ASTURIAS VICECONSEJERÍA DE PRESUPUESTOS Y ADMINISTRACIÓN PÚBLICA
MODULO COMÚN DE ALMACENAMIENTO TEMPORAL DE SOLICITUDES (MCAT) MANUAL DE USO Página 2 de 37 ÍNDICE ÍNDICE...2 1. CONTROL DEL DOCUMENTO...3 1.1. HISTÓRICO DE REVISIONES...3 2. INTRODUCCIÓN...4 3. CLASES
Más detallesLA ESTRUCTURA DE DATOS PILA EN JAVA. CLASE STACK DEL API JAVA. EJEMPLO Y EJERCICIOS RESUELTOS. (CU00923C)
APRENDERAPROGRAMAR.COM LA ESTRUCTURA DE DATOS PILA EN JAVA. CLASE STACK DEL API JAVA. EJEMPLO Y EJERCICIOS RESUELTOS. (CU00923C) Sección: Cursos Categoría: Lenguaje de programación Java nivel avanzado
Más detallesCentro Asociado Palma de Mallorca. Antonio Rivero Cuesta
Centro Asociado Palma de Mallorca Antonio Rivero Cuesta La Sintaxis de Java II... 6 Estructuras de control... 7 Estructuras de selección... 8 Sentencia if... 9 Sentencia if - else... 12 Operador condicional...
Más detallesJava es un lenguaje orientado a objetos, por lo que los objetos (las clases) son los elementos más importantes en el diseño y desarrollo de una
EVENTOS EN JAVA Java es un lenguaje orientado a objetos, por lo que los objetos (las clases) son los elementos más importantes en el diseño y desarrollo de una aplicación. También podemos afirmar que Java
Más detallesEstructura de un programa en Java. Tipos de datos básicos. class miprimerprograma{ // comentario, no es parte del programa
Contenido Estructura de un programa en Java... 2 Tipos de datos básicos... 2 Operadores... 3 Literales... 4 Entrada / Salida... 4 Sentencias condicionales... 5 Funciones... 5 Ejercicios... 6 Variables,
Más detallesElementos léxicos del lenguaje de programación Java
Elementos léxicos del lenguaje de programación Java Elementos léxicos del lenguaje de programación Java Palabras reservadas Identificadores Literales Operadores Delimitadores Comentarios Apéndices Operadores
Más detallesAlgoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 2
Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 2 Contenidos: 1. Definición de clases 2. Implementación de los métodos 3. Constructores y destructores 4. Objetos
Más detallesTipos de programas en Java. Programación basada en eventos. Programación basada en eventos. Creación de una interfaz gráfico de usuario
Tipos de programas en Java Programación basada en eventos Aplicaciones Se pueden ejecutar directamente en un entorno Java Tipos Modo de consola -Interacción mediante teclado -Interfaz basado en texto Aplicaciones
Más detallesCentro Asociado Palma de Mallorca. Antonio Rivero Cuesta
Centro Asociado Palma de Mallorca Introducción Práctica de Programación Java Antonio Rivero Cuesta Sesión III La Sintaxis de Java II... 6 Estructuras de Control... 7 Estructuras de Selección... 8 Sentencia
Más detallesREPASO ARRAYS O ARREGLOS UNIDIMENSIONALES EN JAVA. EJEMPLOS DE CÓDIGO. (CU00903C)
APRENDERAPROGRAMAR.COM REPASO ARRAYS O ARREGLOS UNIDIMENSIONALES EN JAVA. EJEMPLOS DE CÓDIGO. (CU00903C) Sección: Cursos Categoría: Lenguaje de programación Java nivel avanzado I Fecha revisión: 2039 Resumen:
Más detalles