|
|
| Línea 1: |
Línea 1: |
| − | <source lang = java> | + | <source lang=java> |
| | import javax.swing.JFrame; | | import javax.swing.JFrame; |
| − | import javax.swing.JLabel;
| |
| − | import javax.swing.JTextField;
| |
| − | import javax.swing.JButton;
| |
| − | import java.awt.FlowLayout;
| |
| − | import java.awt.BorderLayout;
| |
| − | import javax.swing.JPanel;
| |
| − | import javax.swing.*;
| |
| − |
| |
| − |
| |
| − |
| |
| − | public class Ventana extends JFrame{
| |
| − | //Definimos objetos para incluir en mi ventana
| |
| − | JLabel LNombre = new JLabel("Nombre");
| |
| − | JTextField TNombre = new JTextField(10);
| |
| − | JLabel LApellido = new JLabel("Apellido");
| |
| − | JTextField TApellido = new JTextField(10);
| |
| − | JLabel LFNac = new JLabel("Fecha Nacimiento");
| |
| − | JTextField TFNac = new JTextField(10);
| |
| − | JLabel LDNI = new JLabel("DNI");
| |
| − | JTextField TDNI = new JTextField(10);
| |
| − |
| |
| − | //nuevos swing para probar
| |
| − | JLabel LPass = new JLabel("Passwd");
| |
| − | JPasswordField TPass = new JPasswordField(10);
| |
| − |
| |
| − |
| |
| − | JButton BAceptar = new JButton ("Aceptar");
| |
| − | JButton BSiguiente = new JButton ("Siguiente");
| |
| − | JButton BAnterior = new JButton ("Anterior");
| |
| − | JButton BGrabar= new JButton ("Grabar");
| |
| − | JButton BCancelar = new JButton ("Cancelar");
| |
| − | //Defino paneles
| |
| − | JPanel panelDatos = new JPanel();
| |
| − | JPanel panelBotones = new JPanel();
| |
| − |
| |
| − | //Obejto para distribuirimport javax.swing.JFrame;
| |
| | | | |
| | import javax.swing.JTextField; | | import javax.swing.JTextField; |
| | import javax.swing.JPasswordField; | | import javax.swing.JPasswordField; |
| | import javax.swing.JFormattedTextField; | | import javax.swing.JFormattedTextField; |
| | + | import javax.swing.text.MaskFormatter; |
| | | | |
| − | import java.awt.FlowLayout; | + | import java.text.ParseException; |
| | | | |
| − | public class CajaTexto extends JFrame{
| |
| − | JTextField Texto = new JTextField(10);
| |
| − | JPasswordField TPass = new JPasswordField(10);
| |
| − | JFormattedTextField TFTexto ;
| |
| − | JFormattedTextField TFNumero;
| |
| − |
| |
| − | CajaTexto(){
| |
| − | //Asigno layout
| |
| − |
| |
| − | preparaObjetos();
| |
| − | asignarObjetos();
| |
| − |
| |
| − | //Operaciones de visualizar la ventana
| |
| − | setBounds(100,100,400,400);
| |
| − | setTitle("Ventana de cajas de texto");
| |
| − | setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
| |
| − | setVisible(true);
| |
| − | setLayout(new FlowLayout());
| |
| − | }
| |
| − | private void preparaObjetos(){
| |
| − | TFNumero= new JFormattedTextField(new Integer(0));
| |
| − | TFNumero.setColumns(10);
| |
| − | TFTexto =new JFormattedTextField(new String());
| |
| − | TFTexto.setColumns(10);
| |
| − | }
| |
| − | private void asignarObjetos(){
| |
| − | add(TFNumero);
| |
| − | add(TFTexto);
| |
| − | }
| |
| − |
| |
| − | public static void main(String []a){
| |
| − | CajaTexto t = new CajaTexto();
| |
| − | }
| |
| − |
| |
| − | }
| |
| − | import javax.swing.JFrame;
| |
| − |
| |
| − | import javax.swing.JTextField;
| |
| − | import javax.swing.JPasswordField;
| |
| − | import javax.swing.JFormattedTextField;
| |
| | | | |
| | import java.awt.FlowLayout; | | import java.awt.FlowLayout; |
| Línea 92: |
Línea 17: |
| | JFormattedTextField TFTexto ; | | JFormattedTextField TFTexto ; |
| | JFormattedTextField TFNumero; | | JFormattedTextField TFNumero; |
| | + | JFormattedTextField TFDNI; |
| | | | |
| | CajaTexto(){ | | CajaTexto(){ |
| Línea 111: |
Línea 37: |
| | TFTexto =new JFormattedTextField(new String()); | | TFTexto =new JFormattedTextField(new String()); |
| | TFTexto.setColumns(10); | | TFTexto.setColumns(10); |
| − | }
| + | try{ |
| − | private void asignarObjetos(){
| + | MaskFormatter fDNI = new MaskFormatter("##.###.###-U"); |
| − | add(TFNumero); | + | fDNI.setPlaceholderCharacter('_'); |
| − | add(TFTexto);
| + | TFDNI =new JFormattedTextField(fDNI); |
| − | }
| + | TFDNI.setColumns(15); |
| − |
| + | }catch(ParseException e){ |
| − | public static void main(String []a){
| + | |
| − | CajaTexto t = new CajaTexto();
| + | } |
| − | }
| + | |
| − | | + | |
| − | }
| + | |
| − | import javax.swing.JFrame;
| + | |
| − | | + | |
| − | import javax.swing.JTextField;
| + | |
| − | import javax.swing.JPasswordField;
| + | |
| − | import javax.swing.JFormattedTextField;
| + | |
| − | | + | |
| − | import java.awt.FlowLayout;
| + | |
| − | | + | |
| − | public class CajaTexto extends JFrame{
| + | |
| − | JTextField Texto = new JTextField(10);
| + | |
| − | JPasswordField TPass = new JPasswordField(10);
| + | |
| − | JFormattedTextField TFTexto ;
| + | |
| − | JFormattedTextField TFNumero;
| + | |
| − |
| + | |
| − | CajaTexto(){
| + | |
| − | //Asigno layout | + | |
| | | | |
| − | preparaObjetos();
| |
| − | asignarObjetos();
| |
| − |
| |
| − | //Operaciones de visualizar la ventana
| |
| − | setBounds(100,100,400,400);
| |
| − | setTitle("Ventana de cajas de texto");
| |
| − | setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
| |
| − | setVisible(true);
| |
| − | setLayout(new FlowLayout());
| |
| − | }
| |
| − | private void preparaObjetos(){
| |
| − | TFNumero= new JFormattedTextField(new Integer(0));
| |
| − | TFNumero.setColumns(10);
| |
| − | TFTexto =new JFormattedTextField(new String());
| |
| − | TFTexto.setColumns(10);
| |
| − | }
| |
| − | private void asignarObjetos(){
| |
| − | add(TFNumero);
| |
| − | add(TFTexto);
| |
| − | }
| |
| − |
| |
| − | public static void main(String []a){
| |
| − | CajaTexto t = new CajaTexto();
| |
| − | }
| |
| − |
| |
| − | }
| |
| − | import javax.swing.JFrame;
| |
| − |
| |
| − | import javax.swing.JTextField;
| |
| − | import javax.swing.JPasswordField;
| |
| − | import javax.swing.JFormattedTextField;
| |
| − |
| |
| − | import java.awt.FlowLayout;
| |
| − |
| |
| − | public class CajaTexto extends JFrame{
| |
| − | JTextField Texto = new JTextField(10);
| |
| − | JPasswordField TPass = new JPasswordField(10);
| |
| − | JFormattedTextField TFTexto ;
| |
| − | JFormattedTextField TFNumero;
| |
| − |
| |
| − | CajaTexto(){
| |
| − | //Asigno layout
| |
| − |
| |
| − | preparaObjetos();
| |
| − | asignarObjetos();
| |
| − |
| |
| − | //Operaciones de visualizar la ventana
| |
| − | setBounds(100,100,400,400);
| |
| − | setTitle("Ventana de cajas de texto");
| |
| − | setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
| |
| − | setVisible(true);
| |
| − | setLayout(new FlowLayout());
| |
| − | }
| |
| − | private void preparaObjetos(){
| |
| − | TFNumero= new JFormattedTextField(new Integer(0));
| |
| − | TFNumero.setColumns(10);
| |
| − | TFTexto =new JFormattedTextField(new String());
| |
| − | TFTexto.setColumns(10);
| |
| − | }
| |
| − | private void asignarObjetos(){
| |
| − | add(TFNumero);
| |
| − | add(TFTexto);
| |
| − | }
| |
| − |
| |
| − | public static void main(String []a){
| |
| − | CajaTexto t = new CajaTexto();
| |
| − | }
| |
| − |
| |
| − | }
| |
| − | import javax.swing.JFrame;
| |
| − |
| |
| − | import javax.swing.JTextField;
| |
| − | import javax.swing.JPasswordField;
| |
| − | import javax.swing.JFormattedTextField;
| |
| − |
| |
| − | import java.awt.FlowLayout;
| |
| − |
| |
| − | public class CajaTexto extends JFrame{
| |
| − | JTextField Texto = new JTextField(10);
| |
| − | JPasswordField TPass = new JPasswordField(10);
| |
| − | JFormattedTextField TFTexto ;
| |
| − | JFormattedTextField TFNumero;
| |
| − |
| |
| − | CajaTexto(){
| |
| − | //Asigno layout
| |
| − |
| |
| − | preparaObjetos();
| |
| − | asignarObjetos();
| |
| − |
| |
| − | //Operaciones de visualizar la ventana
| |
| − | setBounds(100,100,400,400);
| |
| − | setTitle("Ventana de cajas de texto");
| |
| − | setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
| |
| − | setVisible(true);
| |
| − | setLayout(new FlowLayout());
| |
| − | }
| |
| − | private void preparaObjetos(){
| |
| − | TFNumero= new JFormattedTextField(new Integer(0));
| |
| − | TFNumero.setColumns(10);
| |
| − | TFTexto =new JFormattedTextField(new String());
| |
| − | TFTexto.setColumns(10);
| |
| − | }
| |
| − | private void asignarObjetos(){
| |
| − | add(TFNumero);
| |
| − | add(TFTexto);
| |
| − | }
| |
| − |
| |
| − | public static void main(String []a){
| |
| − | CajaTexto t = new CajaTexto();
| |
| − | }
| |
| − |
| |
| − | }
| |
| − | import javax.swing.JFrame;
| |
| − |
| |
| − | import javax.swing.JTextField;
| |
| − | import javax.swing.JPasswordField;
| |
| − | import javax.swing.JFormattedTextField;
| |
| − |
| |
| − | import java.awt.FlowLayout;
| |
| − |
| |
| − | public class CajaTexto extends JFrame{
| |
| − | JTextField Texto = new JTextField(10);
| |
| − | JPasswordField TPass = new JPasswordField(10);
| |
| − | JFormattedTextField TFTexto ;
| |
| − | JFormattedTextField TFNumero;
| |
| − |
| |
| − | CajaTexto(){
| |
| − | //Asigno layout
| |
| − |
| |
| − | preparaObjetos();
| |
| − | asignarObjetos();
| |
| − |
| |
| − | //Operaciones de visualizar la ventana
| |
| − | setBounds(100,100,400,400);
| |
| − | setTitle("Ventana de cajas de texto");
| |
| − | setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
| |
| − | setVisible(true);
| |
| − | setLayout(new FlowLayout());
| |
| − | }
| |
| − | private void preparaObjetos(){
| |
| − | TFNumero= new JFormattedTextField(new Integer(0));
| |
| − | TFNumero.setColumns(10);
| |
| − | TFTexto =new JFormattedTextField(new String());
| |
| − | TFTexto.setColumns(10);
| |
| − | }
| |
| − | private void asignarObjetos(){
| |
| − | add(TFNumero);
| |
| − | add(TFTexto);
| |
| − | }
| |
| − |
| |
| − | public static void main(String []a){
| |
| − | CajaTexto t = new CajaTexto();
| |
| − | }
| |
| − |
| |
| − | }
| |
| − | import javax.swing.JFrame;
| |
| − |
| |
| − | import javax.swing.JTextField;
| |
| − | import javax.swing.JPasswordField;
| |
| − | import javax.swing.JFormattedTextField;
| |
| − |
| |
| − | import java.awt.FlowLayout;
| |
| − |
| |
| − | public class CajaTexto extends JFrame{
| |
| − | JTextField Texto = new JTextField(10);
| |
| − | JPasswordField TPass = new JPasswordField(10);
| |
| − | JFormattedTextField TFTexto ;
| |
| − | JFormattedTextField TFNumero;
| |
| − |
| |
| − | CajaTexto(){
| |
| − | //Asigno layout
| |
| − |
| |
| − | preparaObjetos();
| |
| − | asignarObjetos();
| |
| − |
| |
| − | //Operaciones de visualizar la ventana
| |
| − | setBounds(100,100,400,400);
| |
| − | setTitle("Ventana de cajas de texto");
| |
| − | setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
| |
| − | setVisible(true);
| |
| − | setLayout(new FlowLayout());
| |
| − | }
| |
| − | private void preparaObjetos(){
| |
| − | TFNumero= new JFormattedTextField(new Integer(0));
| |
| − | TFNumero.setColumns(10);
| |
| − | TFTexto =new JFormattedTextField(new String());
| |
| − | TFTexto.setColumns(10);
| |
| − | }
| |
| − | private void asignarObjetos(){
| |
| − | add(TFNumero);
| |
| − | add(TFTexto);
| |
| − | }
| |
| − |
| |
| − | public static void main(String []a){
| |
| − | CajaTexto t = new CajaTexto();
| |
| − | }
| |
| − |
| |
| − | }
| |
| − | las cosas
| |
| − | FlowLayout dFila = new FlowLayout();
| |
| − | BorderLayout dCajas = new BorderLayout();
| |
| − |
| |
| − |
| |
| − | Ventana(){
| |
| − | setLayout(dCajas);
| |
| − | insertaDatos();
| |
| − | insertaBotones();
| |
| − | insertaPaneles();
| |
| − | setTitle("Mi Ventana ");
| |
| − | setBounds(200,200,400,400);
| |
| − | setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
| |
| − | this.setVisible(true);
| |
| − | }
| |
| − | /**
| |
| − | * Inserta los contenidos en el contenedor Ventana
| |
| − | */
| |
| − | private void insertaDatos(){
| |
| − | panelDatos.setLayout(dFila);
| |
| − | panelDatos.add(LNombre);
| |
| − | panelDatos.add(TNombre);
| |
| − | panelDatos.add(LApellido);
| |
| − | panelDatos.add(TApellido);
| |
| − | panelDatos.add(import javax.swing.JFrame;
| |
| − |
| |
| − | import javax.swing.JTextField;
| |
| − | import javax.swing.JPasswordField;
| |
| − | import javax.swing.JFormattedTextField;
| |
| − |
| |
| − | import java.awt.FlowLayout;
| |
| − |
| |
| − | public class CajaTexto extends JFrame{
| |
| − | JTextField Texto = new JTextField(10);
| |
| − | JPasswordField TPass = new JPasswordField(10);
| |
| − | JFormattedTextField TFTexto ;
| |
| − | JFormattedTextField TFNumero;
| |
| − |
| |
| − | CajaTexto(){
| |
| − | //Asigno layout
| |
| − |
| |
| − | preparaObjetos();
| |
| − | asignarObjetos();
| |
| − |
| |
| − | //Operaciones de visualizar la ventana
| |
| − | setBounds(100,100,400,400);
| |
| − | setTitle("Ventana de cajas de texto");
| |
| − | setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
| |
| − | setVisible(true);
| |
| − | setLayout(new FlowLayout());
| |
| − | }
| |
| − | private void preparaObjetos(){
| |
| − | TFNumero= new JFormattedTextField(new Integer(0));
| |
| − | TFNumero.setColumns(10);
| |
| − | TFTexto =new JFormattedTextField(new String());
| |
| − | TFTexto.setColumns(10);
| |
| − | }
| |
| − | private void asignarObjetos(){
| |
| − | add(TFNumero);
| |
| − | add(TFTexto);
| |
| − | }
| |
| − |
| |
| − | public static void main(String []a){
| |
| − | CajaTexto t = new CajaTexto();
| |
| − | }
| |
| − |
| |
| − | }
| |
| − | LFNac);
| |
| − | panelDatos.add(TFNac);
| |
| − | panelDatos.add(LDNI);
| |
| − | panelDatos.add(TDNI);
| |
| − | //Añadir más swing
| |
| − | TPass.setEchoChar('#');
| |
| − | TPass.setToolTipText("Inserta la pasword");
| |
| − | panelDatos.add(LPass);
| |
| − | panelDatos.add(TPass);
| |
| − | }
| |
| − |
| |
| − | private void insertaBotimport javax.swing.JFrame;
| |
| − |
| |
| − | import javax.swing.JTextField;
| |
| − | import javax.swing.JPasswordField;
| |
| − | import javax.swing.JFormattedTextField;
| |
| − |
| |
| − | import java.awt.FlowLayout;
| |
| − |
| |
| − | public class CajaTexto extends JFrame{
| |
| − | JTextField Texto = new JTextField(10);
| |
| − | JPasswordField TPass = new JPasswordField(10);
| |
| − | JFormattedTextField TFTexto ;
| |
| − | JFormattedTextField TFNumero;
| |
| − |
| |
| − | CajaTexto(){
| |
| − | //Asigno layout
| |
| − |
| |
| − | preparaObjetos();
| |
| − | asignarObjetos();
| |
| − |
| |
| − | //Operaciones de visualizar la ventana
| |
| − | setBounds(100,100,400,400);
| |
| − | setTitle("Ventana de cajas de texto");
| |
| − | setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
| |
| − | setVisible(true);
| |
| − | setLayout(new FlowLayout());
| |
| − | }
| |
| − | private void preparaObjetos(){
| |
| − | TFNumero= new JFormattedTextField(new Integer(0));
| |
| − | TFNumero.setColumns(10);
| |
| − | TFTexto =new JFormattedTextField(new String());
| |
| − | TFTexto.setColumns(10);
| |
| − | }
| |
| − | private void asignarObjetos(){
| |
| − | add(TFNumero);
| |
| − | add(TFTexto);
| |
| − | }
| |
| − |
| |
| − | public static void main(String []a){
| |
| − | CajaTexto t = new CajaTexto();
| |
| − | }
| |
| − |
| |
| − | }
| |
| − | import javax.swing.JFrame;
| |
| − |
| |
| − | import javax.swing.JTextField;
| |
| − | import javax.swing.JPasswordField;
| |
| − | import javax.swing.JFormattedTextField;
| |
| − |
| |
| − | import java.awt.FlowLayout;
| |
| − |
| |
| − | public class CajaTexto extends JFrame{
| |
| − | JTextField Texto = new JTextField(10);
| |
| − | JPasswordField TPass = new JPasswordField(10);
| |
| − | JFormattedTextField TFTexto ;
| |
| − | JFormattedTextField TFNumero;
| |
| − |
| |
| − | CajaTexto(){
| |
| − | //Asigno layout
| |
| − |
| |
| − | preparaObjetos();
| |
| − | asignarObjetos();
| |
| − |
| |
| − | //Operaciones de visualizar la ventana
| |
| − | setBounds(100,100,400,400);
| |
| − | setTitle("Ventana de cajas de texto");
| |
| − | setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
| |
| − | setVisible(true);
| |
| − | setLayout(new FlowLayout());
| |
| − | }
| |
| − | private void preparaObjetos(){
| |
| − | TFNumero= new JFormattedTextField(new Integer(0));
| |
| − | TFNumero.setColumns(10);
| |
| − | TFTexto =new JFormattedTextField(new String());
| |
| − | TFTexto.setColumns(10);
| |
| − | }
| |
| − | private void asignarObjetos(){
| |
| − | add(TFNumero);
| |
| − | add(TFTexto);
| |
| − | }
| |
| − |
| |
| − | public static void main(String []a){
| |
| − | CajaTexto t = new CajaTexto();
| |
| − | }
| |
| − |
| |
| − | }
| |
| − | import javax.swing.JFrame;
| |
| − |
| |
| − | import javax.swing.JTextField;
| |
| − | import javax.swing.JPasswordField;
| |
| − | import javax.swing.JFormattedTextField;
| |
| − |
| |
| − | import java.awt.FlowLayout;
| |
| − |
| |
| − | public class CajaTexto extends JFrame{
| |
| − | JTextField Texto = new JTextField(10);
| |
| − | JPasswordField TPass = new JPasswordField(10);
| |
| − | JFormattedTextField TFTexto ;
| |
| − | JFormattedTextField TFNumero;
| |
| − |
| |
| − | CajaTexto(){
| |
| − | //Asigno layout
| |
| − |
| |
| − | preparaObjetos();
| |
| − | asignarObjetos();
| |
| − |
| |
| − | //Operaciones de visualizar la ventana
| |
| − | setBounds(100,100,400,400);
| |
| − | setTitle("Ventana de cajas de texto");
| |
| − | setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
| |
| − | setVisible(true);
| |
| − | setLayout(new FlowLayout());
| |
| − | }
| |
| − | private void preparaObjetos(){
| |
| − | TFNumero= new JFormattedTextField(new Integer(0));
| |
| − | TFNumero.setColumns(10);
| |
| − | TFTexto =new JFormattedTextField(new String());
| |
| − | TFTexto.setColumns(10);
| |
| − | }
| |
| − | private void asignarObjetos(){
| |
| − | add(TFNumero);
| |
| − | add(TFTexto);
| |
| − | }
| |
| − |
| |
| − | public static void main(String []a){
| |
| − | CajaTexto t = new CajaTexto();
| |
| − | }
| |
| − |
| |
| − | }
| |
| − | ones(){
| |
| − | panelBotones.setLayout(dFila);
| |
| − | panelBotones.add(BAceptar);
| |
| − | panelBotones.add(BSiguiente);
| |
| − | panelBotones.add(BAnterior);
| |
| − | panelBotones.add(BGrabar);
| |
| − | panelBotones.add(BCancelar);
| |
| − | }
| |
| − | private void insertaPaneles(){
| |
| − | add(panelDatos,BorderLayout.CENTER);
| |
| − | add(panelBotones,BorderLayout.SOUTH);
| |
| − | }
| |
| − |
| |
| − | public static void main(String []lista){
| |
| − | Ventana v = new Ventana();
| |
| − |
| |
| − | }
| |
| − |
| |
| − | }
| |
| − | </source>
| |
| − |
| |
| − |
| |
| − | <source lang=java>
| |
| − | import javax.swing.JFrame;
| |
| − |
| |
| − | import javax.swing.JTextField;
| |
| − | import javax.swing.JPasswordField;
| |
| − | import javax.swing.JFormattedTextField;
| |
| − |
| |
| − | import java.awt.FlowLayout;
| |
| − |
| |
| − | public class CajaTexto extends JFrame{
| |
| − | JTextField Texto = new JTextField(10);
| |
| − | JPasswordField TPass = new JPasswordField(10);
| |
| − | JFormattedTextField TFTexto ;
| |
| − | JFormattedTextField TFNumero;
| |
| − |
| |
| − | CajaTexto(){
| |
| − | //Asigno layout
| |
| − |
| |
| − | preparaObjetos();
| |
| − | asignarObjetos();
| |
| − |
| |
| − | //Operaciones de visualizar la ventana
| |
| − | setBounds(100,100,400,400);
| |
| − | setTitle("Ventana de cajas de texto");
| |
| − | setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
| |
| − | setVisible(true);
| |
| − | setLayout(new FlowLayout());
| |
| − | }
| |
| − | private void preparaObjetos(){
| |
| − | TFNumero= new JFormattedTextField(new Integer(0));
| |
| − | TFNumero.setColumns(10);
| |
| − | TFTexto =new JFormattedTextField(new String());
| |
| | TFTexto.setColumns(10); | | TFTexto.setColumns(10); |
| | } | | } |
| Línea 603: |
Línea 51: |
| | add(TFNumero); | | add(TFNumero); |
| | add(TFTexto); | | add(TFTexto); |
| | + | add(TFDNI); |
| | } | | } |
| | | | |