La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 1 Capitulo 14 Programando GUI y Eventos.

Presentaciones similares


Presentación del tema: "©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 1 Capitulo 14 Programando GUI y Eventos."— Transcripción de la presentación:

1 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Capitulo 14 Programando GUI y Eventos

2 Objetivos –Definir una subclase de JFrame para implementar una ventana marco a medida –Escribir programas manejados por eventos usando el modelo de delegación de Java –Disponer objetos GUI (interfase de usuario gráfica) sobre una ventana usando manejadores de diseño (layout managers) y paneles anidados –Escribir aplicaciones GUI usando objetos JButton, JLabel, ImageIcon, JTextField, JTextArea, JCheckBox, JRadioButton, JComboBox, Jlist y JSlider del paquete javax.swing –Escribir aplicaciones GUI con menúes –Escribir aplicaciones GUI que que procese eventos de ratón

3 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Interfase Gráfica de Usuarios GUI Una aplicación normalmente consta de una o más ventanas con las q el usuario puede interactuar. Las ventanas y los objetos con los que interactua el usuario se conocen como GUI En Java, programas basados en GUI se implementan usando clases de los paquetes javax.swing y java.awt. Las clases Swing dan mayor compatibilidad entre los distintos SO. Están totalmente implementadas en Java, y se comportan de la misma forma, independientemente del SO. Swing livianas totalmente en java lightweight awt pesadas usan los GUI nativos heavyweight Ej el botón se implementa usando los botones de windows en windows, el botón Macintosh en Mac, etc

4 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Ej Objetos GUI Varios objetos GUI del paquete javax.swing.

5 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Prog orientada a eventos Para crear una aplicación efectiva usando GUI se usa un nuevo estilo de control de operación llamado programación manejada por eventos. Ocurre un evento cuando: se mueve el cursor, se presiona un botón, se elige una opción de menú, etc Los objetos se programan para que respondan a los eventos diseñando métodos de manejo de eventos. La mayoría de las aplicaciones actuales GUI se maneja por eventos.

6 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Herencia de JFrame Objectjava.lang Component * def un obj q pde mostrarse ej botón Container * def un componente q pde contener otro componente Windows * def una ventana básica sin título ni borde, eventos Frame * def un ventana con título y bordes JFrame** def un frame con capacidades extendidas Paquetes* java.awt ** javax.swing

7 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Subclase de JFrame Para crear una marco de ventana a medida, definimos una subclase de la clase JFrame. La clase JFrame contiene la funcionalidad rudimentaria para soportar las características encontradas en cualquier marco de ventana.

8 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Creando un JFrame import javax.swing.*; class Ch7DefaultJFrame { public static void main( String[] args ) { JFrame defaultJFrame; defaultJFrame = new JFrame(); defaultJFrame.setVisible(true); }

9 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Creando una Subclase de JFrame Para definir una subclase de otra, declaramos a la subclase con la palabra reservada extends. import javax.swing.*; class Ch7JFrameSubclass1 extends JFrame {... }

10 Customizing Ch14JFrameSubclass1 Una instancia de Ch14JFrameSubclass1 tendrá las sig características: –El título se pone a My First Subclass. –El programa termina cuando se presiona en el cuadro de cerrar –El tamaño del marco es de 300 pixeles de ancho por 200 de alto. –Se posiciona el marco en las coordenadas (150, 250). Estas propiedades están incluidas en el constructor por defecto.

11 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter JFrameSubclass1.class import javax.swing.*; class JFrameSubclass1 extends JFrame{ private static final int ANCHO= 300; private static final int ALTO= 200; private static final int ORIGEN_X= 150; private static final int ORIGEN_Y= 250; public JFrameSubclass1 (){ setTitle (My First Subclass); setSize (ANCHO, ALTO); setLocation (ORIGEN_X, ORIGEN_Y); setDefaultCloseOperation(EXIT_ON_CLOSE); }

12 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Mostrando JFrameSubclass1 La ventana marco JFrameSubclass1 sobre la pantalla

13 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter SetDefaultCloseOperation() DISPOSE_ON_CLOSE El marco y sus componentes se eliminan pero la aplicación no termina DO_NOTHING_ON_CLOSE Hace inefectiva la operación del cierre de ventana HIDE_ON_CLOSE Sólo oculta la ventana llamando a setVisible() false, se puede volver a mostrar EXIT_ON_CLOSE Cierra la ventana y libera la ventana y todas las componentes y cierra la aplicación Determina lo que ocurre cuando se cierra la ventana desde el ícono

14 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter El panel de contenido (Content Pane) de un JFrame El panel de contenido es donde ponemos los objetos GUI tales como botones, títulos, barras de desplazamiento, etc Accedemos al panel de contenido llamando al método getContentPane de su marco. El área gris es el panel de contenido de este marco

15 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter JRootPane Los contenedor de 1er plano (JFrame, JApplet, JDialog, etc) delegan sus operaciones a JRootPane Este panel raíz maneja el panel de contenidos y la barra de menú a través de otros contenedores Los GUI se agregan a panel de contenidos

16 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter JRootPane El JRootPane está compuesto por un glassPane, un contentPane y una barra de menú opcional. El contentPane y la barra de menú, si existen, son manejados por un objeto JLayeredPane Referencia: java.sun.com Understanding Containers

17 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Cambiando el color de fondo Cambio del color de fondo a azul del panel de contenidos Container contentPane = getContentPane(); contentPane.setBackground(Color.BLUE); Arch fuente: Ch14JFrameSubclass2.java

18 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Poniendo objetos GUI sobre un marco Hay dos maneras de poner objetos GUI sobre el panel de contenidos del marco: –Usar un manejador de diseño (layout manager) FlowLayout (por defecto) BorderLayout GridLayout –Usar un posicionamiento absoluto Poner un manejador de diseño null (null layout manager)

19 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Poniendo un Botón Un objeto JButton es un componente GUI que representa un Botón de selección (pushbutton). Ej de como poner un botón usando FlowLayout. contentPane.setLayout( new FlowLayout()); okButton = new JButton("OK"); cancelButton = new JButton("CANCEL"); contentPane.add(okButton); contentPane.add(cancelButton);

20 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Ajustar el tamaño de los botones El tamaño de los botones se ajusta al texto que contiene, el botón Cancel es mayor que el Ok. Usar el método setSize() para especificar el tamaño hay que llamarlo antes que al método add() JButton okButton = new JButton(OK); okButton.setSize(80,30); contentPane.add(okButton); JButton cancelButton = new JButton(CANCEL); cancelButton.setSize(80,30); contentPane.add(cancelButton);....

21 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Eventos y SO Las acciones sobre los GUI son identificadas por el SO El SO determina a cual de los programas que se están ejecutando debe notificar Un click del mouse es registrado por el SO determinando la posición sobre la pantalla, det que aplicación controla esa ventana y coumunica la accción al programa La señal que recibe el programa desde el SO se llama evento

22 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Definiciones Una acción sobre un objeto GUI, como presionar un botón se llama evento. El mecanismo para procesar los eventos se llama manejar eventos (event handling). El modelo de Java de manejo de eventos se basa en el concepto conocido como delegación (delegation-based event model). Con este modelo, el manejo de eventos se implementa por dos tipos de objetos : –Objetos fuente de eventos (event source objects) –Objetos escuchadores de eventos (event listener objects)

23 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Objetos Fuentes de Eventos Un objeto fuente de eventos es el objeto GUI en el que ocurre el evento. Decimos que una fuente de eventos genera un evento. Botones, cajas de texto, listas menús son fuentes de eventos comunes en las aplicaciones basadas en interfase gráfica del usuario. Aunque es posible, en general no definimos nuestras propias fuentes de eventos cuando se escriben aplicaciones basadas en GUI

24 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Objetos oyentes de eventos Un oyente de eventos es un objeto que incluye un método que se ejecutará en respuesta a un evento generado El oyente debe asociarse, o registrarse a una fuente, de manera que se notifique cuando la fuente genera el evento.

25 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Conectando Fuentes y escuchadores JButton Handler Fuente de evento Oyente de evento notify register Un oyente debe registrarse a la fuente. Una vez registrado él será notificado cuando la fuente genere un evento.

26 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter La registración y notificación es específica del tipo de eventos Escuchador del ratón maneja eventos de ratón Escuchador de items maneja eventos de selección de items, etc Entre los diferentes tipos de eventos, el evento de acción (action event) es el más común. –Elegir un botón genera un evento de acción –Elegir un item de menú genera un evento de acción, etc Eventos de acción son generados por fuentes de eventos de acción (action event sources) y manejados por escuchadores de eventos de acción (action event listeners). Tipos de eventos

27 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Manejando Eventos de Acción JButton Button Handler action event source action event listener actionPerformed addActionListener JButton button = new JButton("OK"); ButtonHandler handler = new ButtonHandler( ); // esta clase se muestra a continuación button.addActionListener(handler);

28 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Registro del listener OK Presion Crea Objeto ActionEvent Pasado a class MiManejadorBoton implements ActionListener.... button.addActionListener(this); void actionPerformed(ActionEvent)); // cod a ejecutar cuando se aprieta boton

29 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Interfase ActionListener Cuando llamamos al método addActionListener de una fuente de eventos, debemos pasarle una instancia de la clase que implementa la interfase ActionListener. button.addActionListener(handler) o button.addActionListener(this) La interfase ActionListener incluye un método llamado actionPerformed. Una clase que implemente la interfase ActionListener debe proveer el cuerpo del método de actionPerformed. Ya que actionPerformed es el método que se invoca cuando se genera un evento aquí es donde se coloca el código que deseamos se ejecute en respuesta al evento ocurrido

30 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter La clase ButtonHandler import javax.swing.*; import java.awt.*; import java.awt.event.*; class ButtonHandler implements ActionListener { // implementación del mét busca la fuente del evento public void actionPerformed(ActionEvent event) { JButton clickedButton = (JButton) event.getSource(); JRootPane rootPane = clickedButton.getRootPane( ); Frame frame = (JFrame) rootPane.getParent(); frame.setTitle(Ud Eligió " + clickedButton.getText()); }

31 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Container como Oyente de Evento En vez de definir un oyente de eventos separado, tal como ButtonHandler, es más común tener un objeto que contiene las fuentes de eventos a ser escuchadas Ej: Este marco es el oyente de los eventos de acción de los botones que contiene event source Fuente de eventos event listener Oyente de eventos

32 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Ch14JButtonFrameHandler... class Ch14JButtonFrameHandler extends JFrame implements ActionListener {... cancelButton.addActionListener(this); // el objeto de la subclase JFrame es el oyente okButton.addActionListener(this);..... public void actionPerformed(ActionEvent event) { JButton clickedButton = (JButton) event.getSource(); String buttonText = clickedButton.getText(); setTitle("You clicked " + buttonText); }

33 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Clases GUI de Texto Las clases JLabel, JTextField y JTextArea se usan para campos de texto Un obj JLabel muestra objetos no editables (o imágenes) Un obj JTextField permite que el usuario ingrese una línea de texto Un obj. JTextArea permite que el usuario entre múltiples líneas de texto. Puede usarse para texto no editable taa

34 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Jerarquia de clases GUI texto Ref: java.sun.com

35 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Ej Uso de GUI Texto Ref: java.sun.com

36 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter JTextField Se genera un evento de acción, al igual que con JButton, cuando se presiona ENTER sobre el GUI El mét getText de JTextField permite obtener el texto ingresado JTextField input = new JTextField( ); input.addActionListener(eventListener); contentPane.add(input);

37 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Modif para que maneje el evento la subclase de JFrame JTextField inputLine = new JTextField( ); inputLine.setColumns(22); // nro de caracteres visibles contentPane.add (inputLine) inputLine.addActionListener(this); public void actionPerformed(ActionEvent event){ if (event.getSource() intanceof JButton ){ JButton elegido = (JButton) event.getSource(); String texto = elegido.getText(); setTitle (Ha elegido + texto); } else { // la fuente del evento es inputline //setTitle (Ha ingresado + inputLine.getLine() + );}......} o JTextField textField = (JTextField) event.getSource(); setTitle(Ha ingresado + textField.getText() + );} }

38 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter JLabel JLabel se usa para mostrar una etiqueta Puede ser texto o imágen. No genera eventos Cuando creamos una imágen, se le pasa un objeto ImageIcon en vez de un String JLabel textLabel = new JLabel("Please enter your name"); contentPane.add(textLabel); // imagen JLabel imgLabel = new JLabel(new ImageIcon("cat.gif")); contentPane.add(imgLabel);

39 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Ch14TextFrame2 JLabel (con una imágen) JLabel (con un texto) JTextField

40 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter JTextArea JTextArea para mostrar o permitir el ingreso de múltiples líneas de texto El mét setText() asigna el texto a JTextArea, reemplazando el contenido El mét append() agrega el texto al actual JTextArea textArea = new JTextArea( );... textArea.setText("Hello\n"); textArea.append("the lost "); textArea.append("world"); Hello the lost world JTextArea

41 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Ch14TextFrame3 El estado de Ch14TextFrame3 después de ingresar 6 palabras

42 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Cuadro del JTextArea... JTextArea areaTexto = new JTextArea(); areaTexto.setColumns(22); areaTexto.setRows(8); // idem new JTextArea(22,8) areaTexto.setBorder(BorderFactory.createLineBorder(Color. RED)); areaTexto.setEditable=(false); // por defecto es editable contentPane.add(areaTexto);... String textoIngresado = input.getText(); //areaTexto.append(textoIngresado + \n); // dde de la plataf areaTexto.append(textoIngresado + System.getProperty(line.separator);

43 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Agregar una barra de desplazamiento Por defecto JTextArea no tiene una barra. Para que la tenga hay que colocar al JTextArea en un panel con desplazamiento (JScrollPane). JTextArea textArea = new JTextArea();... JScrollPane scrollText = new JScrollPane(textArea); scrollText.setSize(200, 135); scrollText.setBOrder(BorderFactory.createLineBorder(Colo r.red)); // se agrega a la barra contentPane.add(scrollText);...

44 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Ch14TextFrame3 con barra desplazam Ej ventana Ch14TextFrame3 usando JScrollPane

45 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Manejadores de Presentación (Layout Managers) Los manejadores de presentación determinan como se agregan los objetos GUI al contenedor (content pane o un frame) Entre otros los mas comunes son: - FlowLayout (Ch14FlowLayoutSample.java) –BorderLayout (Ch14BorderLayoutSample.java) –GridLayout (Ch14GridLayoutSample.java) –Taa: CardLayout y GridBagLayout.

46 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter FlowLayout Los componentes se ubican de izquierda a derecha y de arriba a abajo Por defecto los componentes en cada línea se centran. Cuando el marco que contiene un componente se modifica de tamaño, los componentes se ajustan de acuerdo al nuevo espacio

47 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Ej FlowLayout Cinco botones usando FlowLayout.

48 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter BorderLayout Este divide al contenedor en 5 regiones: centro, norte, sur, este y oeste Las regiones norte y sur se expanden o contraen sólo en altura Las regiones este y oeste sólo en ancho La central en ambas ancho y alto. No es necesario que se ocupen todas las regiones Para poner una componente sobre el layout se especifica la región empleando las constantes ej. contentPane.add(boton1, BorderLayout.North);

49 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter BorderLayout Sample

50 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter GridLayout Coloca los componentes en una grilla igualmente espaciada de N x M Los componentes se colocan de arriba a abajo y de izquierda a derecha. El número de filas y columnas permanece sin cambios despues de que se modifica tamaño pero el ancho y alto de cada región se adapta Se puede crear una grilla de sólo una columna o sólo una fila poniendo columna en 0 o fila en 0 setLayout(new GridLayout(0, 6, 10, 10); 1 fila setLayout(new GridLayout(6, 0, 10, 10); 1 columna

51 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter GridLayout Sample

52 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Paneles Anidados Es posible pero díficil poner a todos los componentes GUI en un sólo contenedor. Es más fácil usar varios paneles, colocando uno dentro de otro. Crearemos dos marcos que contengan paneles anidados. Ch14NestedPanels1.java tablero para el juego del Ta Te Ti Ch14NestedPanels2.java interfase para el juego AltoBajo

53 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Paneles de Alto Bajo (HiLo) public Ch14NestedPanels2( ) { JPanel guessPanel, hintPanel, controlPanel, buttonPanel; JButton enterBtn, cancelBtn; Container contentPane; contentPane = getContentPane( ); contentPane.setLayout(new GridLayout(3, 1)); //grilla 3 // 1er panel de la grilla guessPanel = new JPanel(); guessPanel.setBorder(BorderFactory.createTitledBorder( "Your Guess")); guessPanel.add(guessEntry = new JTextField(10));..Cont

54 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter cont. paneles HiLo hintPanel = new JPanel();// 2do panel de la grilla hintPanel.setBorder(BorderFactory.createTitledBorder ("Hint")); hintPanel.add(hint = new JLabel("Let's Play HiLo")); controlPanel = new JPanel(new BorderLayout()); buttonPanel = new JPanel(); // flowLayout buttonPanel.add(enterBtn = new JButton(ENTER)); buttonPanel.add(cancelBtn = new JButton(CANCEL)); controlPanel.add(buttonPanel, BorderLayout.SOUTH); contentPane.add(guessPanel); contentPane.add(hintPanel); contentPane.add(controlPanel); }

55 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Otras componentes GUI comunes JCheckBox –ver Ch14JCheckBoxSample1.java yCh14JCheckBoxSample2.java JRadioButton –ver Ch14JRadioButtonSample.java JComboBox –verCh14JComboBoxSample.java JList –ver Ch14JListSample.java JSlider –ver Ch14JSliderSample.java implementar la interfase ItemListener para obtener el item elegido además de ActionListener

56 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter JCheckBox

57 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter JCheckBox Selección Para crear un JChekBox con el texto Java: JCheckBox cbBtn = new JCheckBox(Java); Para ver si ha sido seleccionado: if (cbBtn.isSelected()){ System.out.println (You can program in + cbBtn.getText()); }else { System.out.println (You cannot program in + cbBtn.getText()); }

58 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter JCheckBox, JRadioButton JCheckBox genera al = que otros botones un evento de acción Además genera otro tipo de eventos: eventos de item (item events) Este se genera cuando cambia de estado (seleccionado – no seleccionado y viceversa) Cuando se genera un evento de item se llama al met itemStateChanged(ItemEvent event) dentro del mét. se verifica el estado con: getStateChage()

59 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Menús El paquete javax.swing contiene tres clases de menú: JMenuBar, Jmenu y JMenuItem. JMenuBar es una barra donde se coloca el menú. Hay una barra de menú por marco. JMenu (tal como Archivo o Editar) es un grupo de opciones.Un JMenuBar puede incluir varios JMenu. JMenuItem (tal como copiar, cortar pegar) son las posibles elecciones de un objeto JMenu. Sólo los JMenuItem generan eventos.

60 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter public void itemStateChange(ItemEvent event) if event.getStateChange()==ItemEvent.SELECTED){ System.out.println (Eligió esta caja); }else{ System.out.println (No eligió esta caja); }

61 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Componentes de un Menú EditViewHelp JMenuBar EditViewHelpFile JMenu JMenuItem separator

62 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Creación de un Menú 1.Crear un obj JMenuBar y asociarlo a un frame 2.Crear un objeto JMenu 3.Crear un objeto JMenuItem y y agregarlo a un objeto JMenu. 4.Adjuntar el objeto JMenu al JMenuBar.

63 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Sentencias para crear un Menu // Crea un Menu filemenu = new JMenu (File); // Crea los items de un menu item = new JMenuItem (New); item.addActionListener (this); filemenu.add(item); // Crea una linea separadora filemenu.addSeparator();

64 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Sentencias para crear un Menu cont // adjuntar a la barra de menu JMenuBar menuBar = new JMenuBar(); setMenuBar (menuBar); // la adjunta al frame menuBar.add(fileMenu); menuBar.add(editMenu); // mostrar que item se eligió response = new JLabel (Prueba del menú); response.setSize(250, 50); contentPane.add(response);

65 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Obtener el item elegido - Si la fuente de un evento es un menu, el met getActionComand de ActionEvent devuelve el texto del menu... String menuName; menuName = event.getActionComand(); if (menuName.equals (Quit)){ System.exit(0); } else { response.setText (Se eligio + menuName ); }


Descargar ppt "©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 1 Capitulo 14 Programando GUI y Eventos."

Presentaciones similares


Anuncios Google