Sunteți pe pagina 1din 3

import import import import import import import import import import import import import import import

import

java.awt.Dimension; java.awt.GridBagConstraints; java.awt.GridBagLayout; java.awt.GridLayout; java.awt.event.ActionEvent; java.awt.event.ActionListener; java.awt.event.ContainerEvent; java.awt.event.ContainerListener; java.util.Vector; javax.swing.BorderFactory; javax.swing.JButton; javax.swing.JComponent; javax.swing.JFrame; javax.swing.JPanel; javax.swing.JScrollPane; javax.swing.JTextArea;

public class ContainerEventDemo extiende JPanel implementos ContainerListen er, ActionListener { JTextArea pantalla; JPanel buttonPanel; JButton AddButton, removeButton, clearButton; Vector buttonList; static final Cadena ADD = "aadir" ; static final Cadena REMOVE = "eliminar" ; static final Cadena CLEAR = "claro" ; static final Cadena nueva lnea = "\ n" ; pblica ContainerEventDemo () { super ( nueva GridBagLayout ()) ; GridBagLayout gridbag = ( GridBagLayout ) getLayout () ; GridBagConstraints c = nuevos GridBagConstraints () ; / / Inicializar una lista vaca de botones. buttonList = nuevo vector ( 10 , 10 ) ; / / Crear todos los componentes. AddButton = nuevo JButton ( "Agregar un botn" ) ; addButton.setActionCommand ( ADD ) ; addButton.addActionListener ( este ) ; removeButton = nuevo JButton ( "Eliminar un botn" ) ; removeButton.setActionCommand ( QUITAR ) ; removeButton.addActionListener ( este ) ; buttonPanel

display = nueva JTextArea () ; display.setEditable ( falsa ) ;

JScrollPane scrollPane = nueva JScrollPane ( pantalla ) ; scrollPane.setPreferredSize ( nueva dimensin ( 200 , 75 )) ; clearButton = nuevo JButton ( "rea de texto libre" ) ; clearButton.setActionCommand ( CLEAR ) ; clearButton.addActionListener ( este ) ; c.fill = GridBagConstraints.BOTH; / / Llenar clula entera. c.weighty = 1,0 ; / / Botn de rea y el rea de mensajes tienen la misma altura . c.gridwidth = GridBagConstraints.REMAINDER; / / fin de la fila gridbag.setConstraints ( ScrollPane c ) ; add ( scrollPane ) ; c.weighty = 0,0 ; gridbag.setConstraints ( clearButton, c ) ; add ( clearButton ) ; c.weightx = 1,0 ; / / Agregar / quitar botones tienen la misma anchura. c.gridwidth = 1 ; / NO / final de la vuelta gridbag.setConstraints ( AddButton, c ) , aadir ( AddButton ) ; c.gridwidth = GridBagConstraints.REMAINDER; / / fin de la fila gridbag.setConstraints ( removeButton, c ) ; add ( removeButton ) ; c.weighty = 1.0 ; . / / Botn de rea y el rea de mensajes tienen la misma altu ra gridbag.setConstraints ( buttonPanel, c ) , complementos ( buttonPanel ) ; setPreferredSize ( nueva dimensin ( 400 , 400 )) ; setBorder ( BorderFactory.createEmptyBorder ( 20 , 20 , 20 , 20 )) ; } pblica sin efecto ComponentAdded ( ContainerEvent e ) { mostrarMensaje ( "aade" , e ) ; } pblica sin efecto ComponentRemoved ( ContainerEvent e ) { mostrarMensaje ( "eliminado de" , e ) ; } void mostrarMensaje ( accin de las cuerdas, ContainerEvent e ) { display.append ((( JButton ) e.getChild ()) . gettext () + "es" + accin + e.getContainer () . getClass () . getName () + salto de lnea ) ; display.setCaretPosition ( display.getDocument () . a getLength ()) ; } / * * Esto podra haber llevado a cabo por dos o tres clases u objetos, por la claridad *. * / pblica void actionPerformed ( ActionEvent e ) { String = comando e.getActionCommand () ; si ( ADD.equals ( comando )) { JButton newButton = nuevo JButton ( "JButton

el botn de aparecer. } else if ( REMOVE.equals ( comando )) { int lastIndex buttonList.size = () - 1 ; tratar { JButton nixedButton el botn de desaparecer. buttonPanel.repaint () ; / / Hacer que el botn de desaparecer. } catch ( ArrayIndexOutOfBoundsException exc ) { } } else if ( CLEAR.equals ( comando )) { display.setText ( "" ) ; } } /** * Create the GUI and show it. For thread safety, this method should be * invoked from the event-dispatching thread. */ private static void createAndShowGUI() { //Make sure we have nice window decorations. JFrame.setDefaultLookAndFeelDecorated(true); / / Creacin y configuracin de la ventana. JFrame frame = nuevo JFrame ( "ContainerEventDemo" ) ; frame.setDefaultCloseOperation ( JFrame.EXIT_ON_CLOSE ) ; / / Crear y configurar el panel de contenido. JComponent newContentPane = nueva ContainerEventDemo () ; newContentPane.setOpaque ( verdad ) ; / / el contenido de los paneles debe ser opaco frame.setContentPane ( newContentPane ) ; / / Muestra la ventana. frame.pack () ; frame.setVisible ( verdad ) ; } public static void principales ( de cadena [] args ) { / / Planificar un trabajo para el hilo de despacho de eventos: / / crear y mostrar esta aplicacin de interfaz grfica de usuario. javax.swing.SwingUtilities.invokeLater ( nueva Runnable () { pblica void run () { createAndShowGUI () ; } }) ; } }