Benemérita Universidad Autónoma de Puebla Carrera Ingeniería en Ciencias de la Computación Asignatura Programación II Trabajo Reporte de los entornos gráficos Catedrático José Andrés Vázquez Flores Integrantes Ricardo Camacho Garza David Limón Cantú Heroica Puebla de Fecha de entrega Zaragoza a 23 de Noviembre del 2012 1 INDICE Contenido Interfaces gráficas .......................................................... 3 AWT .......................................................................... 3 SWING ...................................................................... 4 JFrame ....................................................................... 5 JDialog ...................................................................... 6 JWindow ...................................................................... 6 JTextField ................................................................... 8 JTextArea .................................................................... 9 JPasswordField .............................................................. 10 JEditorPane ................................................................. 11 JTextPane: .................................................................. 12 JMenuBar y JMenu: ........................................................... 12 JMenuItem: .................................................................. 13 JPopupMenu: ................................................................. 14 JCheckBokMenuItem, JRadioButtonMenuItem y JSeparator: ....................... 16 Sub Ventanas: ............................................................... 24 JPanel ...................................................................... 24 2 Interfaces gráficas Es el conjunto de componentes gráficos que facilitan la comunicación entre el usuario y el programa, estos pueden ser: Ventanas Botones Cuadros de diálogo Campos de texto Etc… Estructura de las aplicaciones GUI •Declarar una clase que herede de la superclase JFrame •Declarar cada componente que hará parte de la GUI •Dentro del método constructor, crear y organizar los componentes •Declarar el método main AWT: Es el conjunto de clases más básicas para la creación de interfaces gráficas. No provee componentes complejos. A continuación se muestra un diagrama que ejemplifica los componentes base de una interfaz gráfica creada con AWT: 3 Java implemente otra serie de clases, las cuales heredan a las clases de AWT, las cuales permiten la creación de interfaces gráficas más complejas. SWING: Java Swing hereda las clases de AWT, pero incorpora métodos y clases más avanzadas que facilitan la creación de interfaces gráficas, son fáciles de identificar gracias al prefijo “J”. Por sus características, es la forma más conveniente de programar GUI’s en Java. A continuación explicaremos cada una de las clases y métodos que contiene SWING, ejemplificados en el siguiente diagrama: 4 JFrame Sintaxis: JFrame (String titulo, GraphicsConfiguration gc) Ejemplo: JFrame ventanaPrinc = new JFrame("Ventana Nueva :)"); /*Crea una instancia de la clase JFrame llamada “ventanaPrinc” con el título “Ventana Nueva”.*/ ventanaPrinc.setVisible(true); /* Alterna el estado de la ventana entre visible y no visible (TRUE o FALSE)*/ ventanaPrinc.setSize(320, 240); pixeles, (WIDTH, HEIGHT) */ /* Establece el tamaño de la ventana en ventanaPrinc.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /* Establece el comportamiento de la ventana al presionar el botón cerrar o terminar la aplicación, esto para que se cierre correctamente y sin errores*/ /*Parámetros de setDefaultCloseOperation: EXIT_ON_CLOSE.- Cierra la ventana y todas las demás ventanas de la aplicacion que esten abiertas. Su valor numerico es 3 DO_NOTHING_ON_CLOSE.-Con esto hacemos que nuestra ventana no se cierre cuando le damos click en el boton de cerrar. Su valor numérico es 0 DISPOSE_ON_CLOSE.-Cierra solamente la ventana activa, si tenemos mas ventanas abiertas no se veran afectadas. Su valor numerico es 2 HIDE_ON_CLOSE.-Con esto hacemos que al dar click en el boton cerrar oculte la ventana y no cerrarla (ojo no es lo mismo cerrar que ocultar). Su valor numerico es 1*/ Da como resultado una ventana con barra de titulo y botones para su control, cerrar, minimizar, maximizar. 5 JDialog Sintaxis: JDialog (Frame owner, String title, boolean modal, GraphicsConfiguration gc) Ejemplo: JFrame ventanaPrinc = new JFrame("Ventana Nueva :)"); ventanaPrinc.setVisible(true); ventanaPrinc.setSize(320, ventanaPrinc.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 240); /*Ventana de dialogo creada junto con el JFrame principal, se muestra desde el inicio */ JDialog dialogoP = new JDialog(ventanaPrinc, "Dialogo :)"); /* Crea una ventana de dialogo que pertenece a "ventanaPrinc" con el título "Dialogo :)"*/ dialogoP.setSize(200, 100); /* Como el JFrame, posee el mismo método para asignar el tamaño de la ventana*/ dialogoP.setVisible(true); /* Se activa su visibilidad*/ Da como resultado JDialog, que tiene limitada (sólo botón muestra al inicio del en el código una ventana tipo funcionalidad más de cerrar) que se programa como dice JWindow Sintaxis: JWindow (Window owner, GraphicsConfiguration gc) Ejemplo: 6 JFrame ventanaPrinc = new JFrame("Ventana Nueva :)"); ventanaPrinc.setVisible(true); ventanaPrinc.setSize(320, 240); ventanaPrinc.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JDialog dialogoP = new JDialog(ventanaPrinc, "Dialogo :)"); dialogoP.setSize(200, 100); dialogoP.setVisible(true); /* Ventana tipo JWindow creada y mostrada en el programa, colocada en cierta posición de la pantalla, se utizan las mismas clases de JFrame para mostrarla y darle dimension*/ JWindow ventana1 = new JWindow(ventanaPrinc); /* Crea un objeto y lo enlaza a "ventanaPrinc"*/ ventana1.setVisible(true); /* Lo pone como visible en la pantalla*/ ventana1.setBounds(800, 400, 300,300); /* Posiciona coordenadas de la ventana, y le da un tamaño w, h*/ el objeto en x, y Como se puede observar, el cuadrado gris es el JWindow creado, el cuál no se puede mover, redimensionar ni cerrar a menos que se especifique, se muestra al frente de la ventana JFrame principal, pero detrás de JDialog. 7 JTextField Sintaxis: public JTextField(Document doc, String text, int columns) Ejemplo: public class Pruebaparagui extends JFrame{ public Pruebaparagui(){/* Constructor de la clase principal que hereda a JFrame, para construir la ventana principal y sus componentes*/ super("Hola mundo");//Título de la ventana, llamando al constructor de JFrame Container contenedor = getContentPane(); //Creación de un contenedor para contener el JTextField contenedor.setLayout(new FlowLayout());//Se establece el layout del container con respecto a la ventana JTextField "campot1" campot1 = new JTextField(10);//Creación de un campo de texto contenedor.add(campot1);//Añadir el campo de texto a contenedor para que se coloque en la ventana setSize(320, 200);//tamaño de la ventana (w, h) setVisible(true);//alterna el estado de la ventana a visible } /** * @param args the command line arguments */ public static void main(String[] args) { Pruebaparagui aplicacion = new Pruebaparagui(); aplicacion.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } Ventana creada con un Container y un JTextField de 10 columnas en la posición asignada por el container 8 Si cambiamos el objeto de JTextField por: JTextField campot1 = new JTextField("Hola", 10);//Creación de un campo de texto //"campot1" Ventana creada con un Container y un JTextField de 10 columnas en la posición asignada por el container, que tiene el texto asignado “hola” JTextArea: Sintaxis: JTextArea(String text, int rows, int columns) Ejemplo: super("Hola mundo");//Título de la ventana, llamando al constructor de JFrame Container contenedor = getContentPane(); //Creación de un contenedor para contener el JTextField contenedor.setLayout(new FlowLayout());//Se establece el layout del container con respecto a la ventana JTextField campot1 = new JTextField("Hola", 10);//Creación de un campo de texto "campot1" contenedor.add(campot1);//Añadir el campo de texto a contenedor para que se coloque en la ventana setSize(320, 200);//tamaño de la ventana (w, h) setVisible(true);//alterna el estado de la ventana a visible JTextArea texto1 = new JTextArea("CampoTexto"); //Se crea un JTextArea contenedor.add(texto1);//añade el JTextArea creado al contenedor principal de la ventana contenedor.add(texto1).setBackground(Color.red);//Asigna un color de fondo al JTextField 9 CampoTexto color es el rojo JTextArea de creado con fondo JPasswordField Es un derivado de JTextField con la diferencia de que lo que se introduce en esta campo es de tipo password ***** Sintaxis: JPasswordField(String text, int columns) Ejemplo: super("Hola mundo");//Título de la ventana, llamando al constructor de JFrame Container contenedor = getContentPane(); //Creación de un contenedor para contener el JTextField contenedor.setLayout(new FlowLayout());//Se establece el layout del container con respecto a la ventana JTextField campot1 = new JTextField("Hola", 10);//Creación de un campo de texto "campot1" contenedor.add(campot1);//Añadir el campo de texto a contenedor para que se coloque en la ventana setSize(320, 200);//tamaño de la ventana (w, h) setVisible(true);//alterna el estado de la ventana a visible JTextArea texto1 = new JTextArea("CampoTexto"); //Se crea un JTextArea contenedor.add(texto1);//añade el JTextArea creado al contenedor principal de la ventana contenedor.add(texto1).setBackground(Color.red);//Asigna un color de fondo al JTextField JPasswordField pass = new JPasswordField(10); /* Creación de JPasswordField con tamaño de 10 columnas*/ 10 contenedor.add(pass);/* Se añade el JPasswordField al ordenamiento*/ contenedor, para Ventana creada con un JPassWordField, se observa que al escribir se muestran * en lugar de lo escrito. JEditorPane: Sintaxis: public JEditorPane(String type, String text) Ejemplo: super("JEditorPane – Ejemplo."); JEditorPane jedit; jedit = new JEditorPane();/* Creacion de un nuevo JEditorPane*/ jedit.setContentType("text/html");/* Seteo del tipo optimizar como trabaja el texto que se introduce*/ de contenido, para jedit.setText("Hola mundo :D"); /* Campo de texto predeterminado al iniciar el programa*/ jedit.setAutoscrolls(rootPaneCheckingEnabled);/* Bajar automaticamente cursor cuando el caption se sale del tamaño de la ventana de JEditorPane*/ el add(jedit);/* Añadiendo a jframe el jedit para armar la ventana*/ setSize(320,240);/* seteo del tamaño de la ventana (w, h)*/ setVisible(true);/* Cambiar su estado a visible*/ jedit.setText( /* Seteo de texto inicial con formato HTML*/ "<head><base href=\"file:d:/\"></head>"+ "<b>hola</b><br>" + "<i>adios</i><br>" + "<font face=\"arial\">fuente arial</font><br>" + "<font face=\"courier\">fuente courier</font><br>" + "<font size=\"24\">fuente grande</font><br>" + 11 "<font color=\"red\">color rojo</font><br>"); JeditorPane creado, similar a JFrame, con la diferencia que está compuesto por un campo de entrada de texto para el usuario. Ideal para editores de texto, html, documentos etc… JTextPane: Sintaxis: JTextPane(StyledDocument doc); Ejemplo: // Se instancia el JTextPane JTextPane editor = new JTextPane(); editor.getStyledDocument(); add(editor); JButton boton = new JButton("Botón feliz :D"); editor.insertComponent(boton); Crea un JtextPane, que es como el JeditorPane pero con la posibilidad de poder insertar objetos como botones dentro del área de texto, con formato personalizado JMenuBar y JMenu: Sintaxis: JMenuBar() //sin argumentos de entrada para el constructor 12 public JMenu(String s, boolean b) Ejemplo: super("Prueba de JMenuBar"); setLayout(null);/* se le asigna null al layout de la ventana*/ mb=new JMenuBar();/* se crea un nuevo objeto tipo JMenuBar para contener a los menus del programa*/ setJMenuBar(mb);/* es establece una barra de menus "mb" para el frame*/ menu1=new JMenu("Opciones"); /* Se crea un menu para el menu bar "opciones"*/ mb.add(menu1);/* se añade el menu "opciones" a la barra de menus creada*/ setBounds(10, 20, 300, 200);/* el frame principal se redimensiona y coloca en ciertas coordenadas*/ setVisible(true);/* se cambia el estado del frame a visible*/ setDefaultCloseOperation(EXIT_ON_CLOSE); Ventana creada con unJMenuBar y un JMenu “Opciones”, para notar su implementación y como se ve el resultado, el menú Opciones no despliega nada. JMenuItem: Sintaxis: public JMenuItem(String text, int mnemonic) Ejemplo: super("Prueba de JMenuBar"); JMenu menu1; JMenuItem mi1,mi2,mi3; setLayout(null);/* se le asigna null al layout de la ventana*/ mb=new JMenuBar();/* se crea un nuevo objeto tipo JMenuBar para contener a los menus del programa*/ setJMenuBar(mb);/* es establece una barra de menus "mb" para el frame*/ menu1=new JMenu("Opciones"); /* Se crea un menu para el menu bar "opciones"*/ 13 mb.add(menu1);/* se añade el menu "opciones" a la barra de menus creada*/ menu1=new JMenu("Menu Feliz :)");/* creacion de otro menu para la barra de menus*/ mb.add(menu1);/* se añade este menu a la barra de menus "mb"*/ mi1=new JMenuItem("opcion1");/* Creacion de un submenu que se añade al menu "Menu Feliz :)"*/ menu1.add(mi1); mi2=new JMenuItem("opcion2");/* Lo mismo con este*/ menu1.add(mi2); mi3=new JMenuItem("opcion3");/* Y este*/ menu1.add(mi3); setBounds(10, 20, 300, 200);/* el frame principal se redimensiona y coloca en ciertas coordenadas*/ setVisible(true);/* se cambia el estado del frame a visible*/ setDefaultCloseOperation(EXIT_ON_CLOSE); Al crear JMenuItem y añadirlos a algún JMenu, al dar click sobre ese menú, se despliega una lista con las opciones dadas en el código. JPopupMenu: Sintaxis: JPopupMenu() //sin argumentos de entrada Ejemplo: super("Prueba de JMenuBar"); JMenu menu1; JMenuItem mi1,mi2,mi3; setLayout(null);/* se le asigna null al layout de la ventana*/ mb=new JMenuBar();/* se crea un nuevo objeto tipo JMenuBar para contener a los menus del programa*/ setJMenuBar(mb);/* es establece una barra de menus "mb" para el frame*/ menu1=new JMenu("Opciones"); /* Se crea un menu para el menu bar "opciones"*/ mb.add(menu1);/* se añade el menu "opciones" a la barra de menus creada*/ 14 menu1=new JMenu("Menu Feliz :)");/* creacion de otro menu para la barra de menus*/ mb.add(menu1);/* se añade este menu a la barra de menus "mb"*/ mi1=new JMenuItem("opcion1");/* Creacion de un submenu que se añade al menu "Menu Feliz :)"*/ menu1.add(mi1); mi2=new JMenuItem("opcion2");/* Lo mismo con este*/ menu1.add(mi2); mi3=new JMenuItem("opcion3");/* Y este*/ menu1.add(mi3); setBounds(10, 20, 300, 200);/* el frame principal se redimensiona y coloca en ciertas coordenadas*/ setVisible(true);/* se cambia el estado del frame a visible*/ setDefaultCloseOperation(EXIT_ON_CLOSE); JPopupMenu pmenu = new JPopupMenu();// declaracion de un menu contextual, no tiene argumentos de entrada JMenuItem s1 = new JMenuItem("sorpresa1");//creacion de un elemento del menu contextual, el primero que aparece al dar clic derecho pmenu.add(s1);//añadir el elemento al menu //se repite para los siguientes 3 elementos JMenuItem s2 = new JMenuItem("sorpresa2"); pmenu.add(s2); JMenuItem s3 = new JMenuItem("sorpresa3"); pmenu.add(s3); JMenuItem s4 = new JMenuItem(":D"); pmenu.add(s4); //se enlaza el menu contextual a un elemento de la interfaz, solo se activa ahí, en este caso la barra de menu mb.setComponentPopupMenu(pmenu); Menú contextual mostrado al presionar clic derecho, con los elementos antes creados 15 JCheckBokMenuItem, JRadioButtonMenuItem y JSeparator: Sintaxis: public JCheckBoxMenuItem(String text, Icon icon, boolean b) public JRadioButtonMenuItem(String text, Icon icon, boolean selected) public JSeparator(int orientation) //la orientacion en la que se dibujará el separador, puede ser: SwingConstants.HORIZONTAL o SwingConstants.VERTICAL Ejemplo: JMenu menu1,menu2,menu3; JMenuItem mi1,mi2,mi3; setLayout(null);/* se le asigna null al layout de la ventana*/ mb=new JMenuBar();/* se crea un nuevo objeto tipo JMenuBar para contener a los menus del programa*/ setJMenuBar(mb);/* es establece una barra de menus "mb" para el frame*/ menu1=new JMenu("Opciones"); /* Se crea un menu para el menu bar "opciones"*/ mb.add(menu1);/* se añade el menu "opciones" a la barra de menus creada*/ menu2=new JMenu("Menu Feliz :)");/* creacion de otro menu para la barra de menus*/ mb.add(menu2);/* se añade este menu a la barra de menus "mb"*/ menu3=new JMenu("Botones Radio");/* creacion de otro menu para la barra de menus*/ mb.add(menu3);/* se añade este menu a la barra de menus "mb"*/ mi1=new JMenuItem("opcion1");/* Creacion de un submenu que se añade al menu "Menu Feliz :)"*/ menu2.add(mi1); menu2.addSeparator(); mi2=new JMenuItem("opcion2");/* Lo mismo con este*/ menu2.add(mi2); menu2.addSeparator(); mi3=new JMenuItem("opcion3");/* Y este*/ menu2.add(mi3); setBounds(10, 20, 300, 200);/* el frame principal se redimensiona y coloca en ciertas coordenadas*/ setVisible(true);/* se cambia el estado del frame a visible*/ /* creacion de elementos de menu tipo checkbox, con nombre*/ 16 JCheckBoxMenuItem lista1 = new JCheckBoxMenuItem("Nombres"); JCheckBoxMenuItem lista2 = new JCheckBoxMenuItem("Apellidos"); JCheckBoxMenuItem lista3 = new JCheckBoxMenuItem("Recibos"); /* añadiendo los elementos a un menu de la barra*/ menu1.add(lista1);// como parametro se pone el menu al que se agregaran menu1.addSeparator();//añadir JSeparator menu1.add(lista2); menu1.addSeparator(); menu1.add(lista3); //se repiten los pasos para otros elementos JRadioButtonMenuItem Rboton1 = new JRadioButtonMenuItem("Boton de la radio"); JRadioButtonMenuItem Rboton2 = new JRadioButtonMenuItem("Radio 1"); JRadioButtonMenuItem Rboton3 = new JRadioButtonMenuItem("Radio 2"); JRadioButtonMenuItem Rboton4 = new JRadioButtonMenuItem("Radio 3"); menu3.add(Rboton1); menu3.addSeparator(); menu3.add(Rboton2); menu3.addSeparator(); menu3.add(Rboton3); menu3.addSeparator(); menu3.add(Rboton4); Ejemplo de JCheckBoxMenuItem con separadores resultante del código Ejemplo de JRadioButtonMenuItem con separadores resultante del código 17 WIDGETS Sintaxis: public JButton(String text, Icon icon); public JToggleButton(String text, Icon icon, boolean selected); public JCheckBox(String text, Icon icon, boolean selected); public JRadioButton(String text, Icon icon, boolean selected); public JComboBox(); public JLabel(); public JList(); public JTree(TreeModel newModel); public JToolBar(String name, int orientation); public JTable(); public JScrollBar(); public JSlider() public JToolTip(); public JProgressBar(); Ejemplo: super("Hola mundo Botones"); Container contenedor = getContentPane(); contenedor.setLayout(new FlowLayout()); setSize(640, 480); setVisible(true); //creacion de un boton JButton como parametro el texto a mostrar en el botón JButton boton1 = new JButton("Click Aqui"); contenedor.add(boton1); JButton boton2 = new JButton("Click Aca"); contenedor.add(boton2); JButton boton3 = new JButton("Click Por aca"); contenedor.add(boton3); // crear un JToggleButton tipo switch que tiene similares propiedades a JButton :D 18 JToggleButton boton4 = new JToggleButton("Boton Largo"); contenedor.add(boton4);//añadir el botón al contenedor del Frame principal JToggleButton boton5 = new JToggleButton("Boton mas largoo"); contenedor.add(boton5); JToggleButton boton6 = new JToggleButton("Boton mas mas largo"); contenedor.add(boton6); JToggleButton boton7 = new JToggleButton("Boton mas mas mas larguisimo"); contenedor.add(boton7); //JCheckBox, es una checkbox, se crea desactivada por defecto con una etiqueta "Listo" JCheckBox boton8 = new JCheckBox("Listo"); contenedor.add(boton8); JCheckBox boton9 = new JCheckBox("Casi Listo"); contenedor.add(boton9); JCheckBox boton10 = new JCheckBox("Listisismo"); contenedor.add(boton10); //Creacion de JRadioButton, desactivado por defecto y con la etiqueta proporcionada con el nombre en el constructor JRadioButton boton11 = new JRadioButton("Radio 1"); contenedor.add(boton11); JRadioButton boton12 = new JRadioButton("Radio 2"); contenedor.add(boton12); JRadioButton boton13 = new JRadioButton("Radio 3"); contenedor.add(boton13); //Creacion de una barra JSlider en las coordenadas x, y, con tamaño w, h JSlider barra = new JSlider(0, 0, 300, 10); contenedor.add(barra); JSlider barra2 = new JSlider(0, 0, 300, 10); contenedor.add(barra2); //Leyenda de ayuda de los botones al poner el cursor sobre cada botón, una propiedad de JButton, radio button y checkbox boton1.setToolTipText("Que quieres aqui!!!"); 19 boton2.setToolTipText("jajajajajajaja"); boton3.setToolTipText("Ayudaaaa Belmonth"); //declaración de un combo box (lista de opciones desplegable) JComboBox combo1 = new JComboBox(); //colocación en el frame, coordenadas x, y, w, h combo1.setBounds(50,100,80,20); add(combo1); //añadir item a la ista con el método addItem, como parámetro se pone el texto a mostrar para la opcion combo1.addItem("rojo"); combo1.addItem("vede"); combo1.addItem("azul"); combo1.addItem("amarillo"); combo1.addItem("negro"); //creacion de jlabel, colocacion y dimensionamiento JLabel label1=new JLabel("Sistema de Facturación."); label1.setBounds(10,140,300,30); //añador a contenedor la jlabel creada contenedor.add(label1); JLabel label2=new JLabel("Vesion 1.0"); label2.setBounds(10,150,100,30); contenedor.add(label2); //Crear una JList, que almacena un listado de entradas por medio de un arreglo de String String[] entries = { "Entry 1", "Entry 2", "Entry 3", "Entry 4", "Entry 5", "Entry 6" }; //Crear el Jlist con parametro de entrada el arreglo de string "entries" JList sampleJList = new JList(entries); //Establecer el numero de elementos visibles en el JList sampleJList.setVisibleRowCount(4); //Poner la fuente, tipo y tamaño de la misma a mostrar para los elementos de la lista 20 Font displayFont = new Font("Serif", Font.BOLD, 18); //activar la fuente establecida por el objeto Font en la clase setFont sampleJList.setFont(displayFont); //instanciado de la clase JScrollPane con parametro de entrada de una JList para llenar los elementos de la misma JScrollPane listPane = new JScrollPane(sampleJList); //Creacion de un nuevo JPanel que contiene otro widget JPanel listPanel = new JPanel(); //asignación del color de fondo con la clase Color listPanel.setBackground(Color.white); //Asignar el borde con nombre "Sample Jlist" Border listPanelBorder = BorderFactory.createTitledBorder("Sample JList"); listPanel.setBorder(listPanelBorder); //añadir el borde creado a listPanel, el JPanel creado anteriormente listPanel.add(listPane); //añadir el JPanel al Container del frame principal, centrado contenedor.add(listPanel, BorderLayout.CENTER); //creacion de elementos para un campo de texto con etiqueta y borde, con fondo blanco } //creando JLabel JLabel valueLabel = new JLabel("Last Selection:"); valueLabel.setFont(displayFont); //Asignar el valor a un JText field al momento de creación, sus argumentos son el nombre que contiene (datos que se muestran al peincipio) y el tamaño de columnas que mide JTextField valueField = new JTextField("None", 7); //Asignar la fuente para dibujar el campo de texto valueField.setFont(displayFont); //Creacion de un JPanel, sin argumentos de entrada JPanel valuePanel = new JPanel(); //Asignación del color de fondo del panel, es opcional, se le manda un objeto Color valuePanel.setBackground(Color.white); 21 //Asignar el nombre de la etiqueta del borde creado con el constructor de ValuePanelBorder, que tiene como argumento una clase de BorderFactory que regresa y asigna en la posición superor de Border valuePanelBorder = BorderFactory.createTitledBorder("JList Selection"); //Asignacion de un borde a JPanel, con esto los dos se juntan y el borde se dibuja alrededor del jPanel con la etiqueta y color previamente asignados, el valor de entrada de este método es un objeto tipo Border valuePanel.setBorder(valuePanelBorder); //Se añade al JPanel el JTextField y el JLabel para que formen parte del mismo valuePanel.add(valueLabel); valuePanel.add(valueField); //añadir al contenedor del frame principal el JPanel creado y alinearlo a la izquierda contenedor.add(valuePanel, BorderLayout.SOUTH); //Activar la visibilida booleanos true o false del Frame principal, valores de entrada son setVisible(true); //Creacion de un JTree, primero es necesario crear un DefaultMutableTreeNode que contenga a todos los hijos que aparecerán en la lista DefaultMutableTreeNode abuelo = new DefaultMutableTreeNode("abuelo"); //Creación de DefaultTreeModel necesario para instanciar un JTree, el cual será el padre de todos los nodos que se creen después de instanciar el JTree DefaultTreeModel modelo = new DefaultTreeModel(abuelo); //Instanciado de JTree, con argumento DefaultTreeModel explicado más arriba JTree tree = new JTree(modelo); //Creación de nodos para la lista del arbol DefaultMutableTreeNode padre = new DefaultMutableTreeNode("padre"); DefaultMutableTreeNode tio = new DefaultMutableTreeNode("tio"); DefaultMutableTreeNode hijo=new DefaultMutableTreeNode("hijo"); DefaultMutableTreeNode hija=new DefaultMutableTreeNode("hija"); //se añade al contenedor del frame principal el objeto JTree creado contenedor.add(tree); 22 //Inserta los nodos del arbol, argumentos DefaultMutableTreeNode (el nodo arbol necesario que será el "hijo" o sub categoria de lo que se inserte), DefaultMutableTreeNode que será el padre de lo que se inserte y el índice del orden en el que se colocará modelo.insertNodeInto(padre,abuelo,0); modelo.insertNodeInto(tio, abuelo, 1); modelo.insertNodeInto(hijo, padre, 0); modelo.insertNodeInto(hija, padre, 1); //Creación de barra de herramients JToolBar, no tiene argumentos de entrada JToolBar barraBotones = new JToolBar(); //Es posible añadir widgets dentro de esta barra, por medio del método add, como argumento pide un widget, el cual puede ser instanciado dentro de los parámetros o introducido de alguno declarado anteriormente barraBotones.add(new JButton("1")); barraBotones.add(new JButton("2")); barraBotones.add(new JButton("3")); barraBotones.add(new JButton("4")); barraBotones.add(new JButton("5")); //se añade el JToolBar al contenedor del frame principal contenedor.add(barraBotones); //Creación de un JScrollBar, no tiene argumentos de entrada para crearse, tiene varios métodos para introducirse en donde sea necesaria una barra de desplacamiento, en este ejemplo sólo se enseña como instanciar JScrollBar scrollBar = new JScrollBar(); //se añade el scrollBar a el contenedor del frame principal contenedor.add(scrollBar); //Se crea una barra de progreso, JProgressBar Pbarra = new JProgressBar(0, 10); //añade al contenedor principal la barra de progreso contenedor.add(Pbarra); // asignacion de color de fondo de la barra de progreso para simular que está llena Pbarra.setBackground(Color.blue); 23 Sub Ventanas: JPanel: Sintaxis: JPanel(LayoutManager layout, boolean isDoubleBuffered); Ejemplo: super( "Demostración JPanel" ); // obtener panel de contenido Container contenedor = getContentPane(); //crear un arreglo de JButton (botones) botones = new JButton[ 5 ]; // configurar panel y establecer su esquema panelBotones = new JPanel(); 24 panelBotones.setLayout( new GridLayout( 1, botones.length ) ); // crear y agregar botones por medio de un for, para que los coloque en orden de izquierda a derecha for ( int cuenta = 0; cuenta < botones.length; cuenta++ ) { botones[ cuenta ] = new JButton( "Botón " + ( cuenta + 1 ) ); panelBotones.add( botones[ cuenta ] ); } //añadir el JPanel de botones al frame principal, organizados al norte del container (arriba) contenedor.add( panelBotones, BorderLayout.NORTH ); //poner la dimension de la ventana setSize( 425, 150 ); //cambiar el estado de la ventana a visible setVisible( true ); JScrollPane Sintaxis: JScrollPane(int vsbPolicy, int hsbPolicy); Ejemplo: // La ventana JFrame ventana = new JFrame("Imagen"); // El panel de scroll JScrollPane scroll = new JScrollPane(); // La etiqueta. JLabel etiqueta = new JLabel(); 25 // Se carga la imagen, con path absoluto para evitar problemas y debe // ser un gif. Icon imagen = new ImageIcon ("C:/Users/David/Pictures/Iconos/starcraft2-13.png"); // Se mete la imagen en el label etiqueta.setIcon (imagen); // Se mete el scroll en la ventana ventana.getContentPane().add(scroll); // Se mete el label en el scroll scroll.setViewportView(etiqueta); // Y se visualiza todo. ventana.pack(); ventana.setVisible(true); 26