Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - Mitsu

#1
Arquitectura Java Sólida es un libro para los que quieren en Java Enterprise Edition (JEE). El libro abarca todos los aspectos fundamentales que el lector debe aprender si desea incursionar en el mundo JEE. En éste libro el lector comenzará desde lo básico, como son las JSP (Java Server Pages), MySQL (código SQL) simulando una tienda de libros. A medida que se avanza en la lectura se aprenderá a utilizar distintos patrones de diseño para una buena arquitectura de aplicaciones.

Como saben, en Java ya no se utiliza el tradicional código SQL dentro de las clases. Para ésto, el lector aprenderá a usar persistencia con el Framework Hibernate, que es un Framework ORM que nos permite usar pool de conexiones y lo más importante hace posible mapear una clase java y convertir sus objetos en entidades que representan una tabla, haciendo que cualquier operación con estas entidades, las veamos reflejadas en nuestra base de datos.

El lector aprenderá también a utilizar el muy famoso y querido Framework Spring, aprenderemos a utilizar los módulos Spring MVC, Spring Security y Spring JDBC. Spring es un excelente framework para todo tipo de aplicaciones, manejando a la perfección los ManagedBeans, permitiéndonos el uso de Inyección de dependencias, que lo hace Spring sin nosotros tener que tocar código. Esto es muy bueno en una aplicación, ya que no tendremos dependencias de ningún tipo en nuestras clases, haciendo nuestra aplicación mucho más escalable y flexible.

El lector también aprenderá a usar JSF que es el Framework estándar de la arquitectura JEE, es un framework MVC para aplicaciones web. Para la vista en JSF, existen muchas librerías como PrimeFaces, que es una extensión de JSF. Nos provee de muchísimos controles (+100) hechos en base a JQuery/Ajax y de increíbles temas como Bootstrap y muchos otros.

Cita del autor:
Citar
El objetivo de este libro es permitir al lector obtener una visión global sobre la plataforma JEE. Adquiriendo los conocimientos necesarios para comenzar a trabajar con los distintos frameworks que soporta (Hibernate, Spring, JSF, etc.). A diferencia de otros libros que se centran en el manejo de un framework en concreto Arquitectura Java Sólida hace hincapié en los principios de ingeniería y patrones de diseño que permiten integrar unos frameworks con otros a la hora de construir una solución enterprise.



Link del libro: Arquitectura Java Sólida
#2
Hola, hoy entré y vi esto (A no ser que haya estado desde siempre y yo de animal no lo vi xD), un sistema de puntuación. ¿Cómo funciona? ¿Es como agradecimiento?



Salu2.
#3
PHP / [ORM] ¿Qué ORM usan en PHP?
18 Marzo 2014, 13:15 PM
Pues eso, una duda que me ha surgido sobre si los programadores PHP tienen algún framework ORM, porque utilizar código SQL al programar ya quedó en la prehistoria xD.

Por ejemplo, en Java uso Hibernate, ¿cuál sería el equivalente en PHP? Salu2.
#4
Hola, estaba pensando en que quizá se pueda ordenar un poco mejor las secciones de programación.

Por ejemplo, las secciones de lenguajes de programación se pueden dividir para las 2 plataformas de desarrollo, Escritorio (Desktop) - Web, por ejemplo:

Programación Escritorio:

   
  • Java Desktop
       
  • C#
       
  • C/C++
       
  • Python (Script - Desktop)

    Programación web:

     
  • PHP
     
  • Java EE
     
  • ASP.NET
     
  • Python (Django, ...)

    La sección de programación quedaría mucho más ordenado, y no se mezclarían temas orientados a web con escritorio. Además, así los colaboradores pueden estar en la sección en la que deseen ayudar, o que mejor se les da.


    Un saludo.
#5
Java / [JavaFX] VirusTotal Analyzer
1 Noviembre 2013, 21:23 PM
Sencilla Aplicación escrita en JavaFX por quien escribe, para analizar archivos en VirusTotal.

Imágenes:

Vista:

Corriendo:

Pestaña Reportes:


Ejecutable:       Ejecutable
Código Fuente: Source
#6


La física es la que en tiempos modernos han elegido las mentes brillantes. Personas prodigiosas, que gracias a vaya uno saber qué cosa extraña en su gestación, tienen capacidades casi inhumanas de almacenar información, calcular y resolver problemas. Miembro de esta elite de afortunados, Santiago González eligió la informática como área de especialización en la que se desarrolla no como una máquina de memorizar fórmulas, sino como un genio de 14 años que maneja 12 lenguajes de programación y que programa hasta en sus sueños. Conoce su historia, sus habilidades y más sobre este futuro dios de la programación.


Las grandes biografías de los grandes pensadores y hombres de ciencia que ha dado la humanidad se remonta siempre a la infancia de los genios. No solamente por una cuestión cronológica, sino porque es en la niñez donde nuestro cerebro está especialmente determinado a aprender todo lo que se nos ponga en frente. Es un factor vital y biológico irrefutable, pero de vez en cuando se sale de sus límites y nos muestra la particularidad de una mente brillante. Santiago González es una mente brillante, y sólo tiene 14 años de edad. Con una personalidad bastante madura para una persona de su edad, a Santiago González lo emociona el conocimiento y la belleza detrás de la construcción de soluciones para todo tipo problemas, definición de la inteligencia por antonomasia. Será por eso que a partir de sus 2 años de edad comenzó a manifestar que no era igual a los demás de su edad, sino que era un genio al cual había que motivar, un niño prodigio y un "verdadero nerd", como el mismo se describe

Santiago Gonzales tiene 14 años y cursa en la Colorado School of the Mines, una institución acostumbrada a tratar con mentes especiales de niños prodigios, aunque la de Santiago González los tiene asombrados. Actualmente tiene 14 y cursa con compañeros que tienen arriba de 18 para graduarse en ciencias de la computación, pero probablemente a los 23 estará completando su PhD en la misma rama, como el mismo ya tiene programado hacer en la Universidad de Standford. Hablando de programación, mientras que yo me peleo con las introducciones en video a Python a mis 27,  este niño de 14 es fluente en 12 lenguajes de programación, que escribe como si de su lengua natal se tratara. Además de tener una desesperación existencial por aprender más de cualquier cosa todo el tiempo, Santiago dice que cuando no puede solucionar un bug en sus programas, se acuesta a dormir pensando en ellos y sueña que programa. Muchas veces, al despertar, la solución está ahí, en su cabeza y lista para deslizarse a la pantalla.


Entre sus increíbles logros para la edad, Santiago ya suma más de 15 aplicaciones para iOS publicadas en el iTunes Store, muchas de las cuales son muy bien reputadas. Parte de la serie Prodigios de THNKR, mientras Santiago dibuja poemas informáticos en Objective-C y sueña con trabajar algún día para Apple, sus padres, compañeros y tutores continúan anonadados ante su inteligencia extraordinaria. Tanto es así, que actualmente está participando de un proyecto sobre eficiencia energética llevado adelante por la jerarquía académica de su colegio. Este tipo de ocupaciones no le dejan tiempo alguno para andar ocupándose de la vestimenta, de otros niños de su edad y de las novias, a las que considera una pérdida de tiempo. Habrá que ver qué tipo de destino le espera a este genio en ciernes, de quien no podemos más que demostrar admiración y un poquito de sana envidia. Ah. Y si yo fuera Tim Cook, no dudaría en ficharlo ya mismo.


Fuente: www.neoteo.com
#7
Pues eso, si no me logueo no puedo ver las imágenes de los posts. Si me logueo sí las puedo ver. ¿Es normal?
#8
Java / [Source] [JavaFX] [MySQL] - FXAgenda
28 Octubre 2013, 03:19 AM
Buenas noches con todos.

Estoy practicando con JavaFX, la verdad me parece un excelente framework para RAD (desarrollo rapido de aplicaciones). Es un framework muy completo y por supuesto, multiplataforma.

JavaFX es la nueva apuesta de Oracle (Aunque el proyecto fue inicialmente de Sun), para el desarrollo de GUI, y la verdad fue un buen movimiento. JavaFX ha venido para reemplazar a Swing a mediano - largo plazo como lo dice Oracle, y creo que no tardará mucho. Gran cantidad de programadores están migrando a JavaFX, por su flexibilidad e increible potencia. JavaFX puede ser usado en Desktop, web y Móvil.


FX AGENDA:


FXAgenda es una agenda virtual. Puede guardar los contactos que se desee. Los contactos serán guardados en una base de datos.

Características:


  • Cuando se lance la aplicación la primera vez, pedirá configurar el root y pass de su base de datos.
  • Cuando se lance la aplicación por primera vez, creará una carpeta en: Home/AppData/Local/, llamada 'agenda'.
  • En la carpeta agenda se guardarán las configuraciones de  la cuenta de usuario y de la base de datos: userdata.txt y database.txt
  • Si se elimina el archivo userdata.txt lo creará automáticamente al iniciar la aplicación con el usario y contraseña por defecto.
  • Si se elimina el archivo database.txt al iniciar la aplicación pedirá el root y pass de su base de datos, tal y como la primera vez que se inicia la aplicación.
  • Se puede añadir contactos, modificar y eliminar.
  • Para añadir un contacto se tiene que ir al menú 'Archivo' y elegir la opción 'Nuevo'.
  • El boton Guardar se deshabilitará mientras no se ingresen todos los datos.
  • Para modificar un contacto se da doble clic en la celda a modificar, y se establece el nuevo valor. Se modificará autom. la misma celda en la Base de datos.
  • Para eliminar un contacto, se puede dar clic derecho en la fila de la tabla y elegir la opción 'eliminar', o se puede ir al menú Editar -> eliminar.
  • Si se quiere ver solo la tabla, presionar Cancelar.
  • Para salir, simplemente hay que ir al menú Archivo -> Salir.

    Imágenes:

    Login:



    Agregar nuevo contacto:



    Menu Editar:



    Establecer nuevo usuario y contraseña:



    Establecer nueva config. de la base de datos:



    Eliminar contacto:



    Modificar contacto:



    Acerca del autor:



    Base de datos (MySql):


    CREATE DATABASE contactos;


    CREATE TABLE contacto(
    ID mediumint(100) not null auto_increment,
    Nombre varchar(50) not null, Apellido varchar(50) not null,
    FNacimiento varchar(14) not null, Telefono varchar(20) not null,
    Email varchar(50) not null, Direccion varchar(80) not null,
    primarykey(ID));



    NOTA: El usuario y contraseña por defecto son: user - pass. Puede cambiarse en el menú Editar.


    Links actualizados:

    Ejecutable:     FXAgenda

    Código fuente: Source



    Espero les sirva de algo. Saludos...
#9
Les dejo un manual en español de WPF. Dice básico pero lo veo bastante bueno.

Manual WPF
#10
Buen día.

Este es mi primer programita en C#, y la verdad no entiendo muchas cosas. Espero me puedan echar un cable  :xD Por cierto, uso Visual Studio Express 2013, que está muy bonita xD

El programita es sencillo, solo registrará los datos de un trabajador en una tabla. Tengo las siguientes clases:

  • Clase Trabajador (pojo). Este será el prototipo del trabajador, todos se crearán a partir de esta pojo.
  • Clase MainWindow (Formulario)
  • Clase Controller (Controlador del programa)
  • Clase RegistrarTrabajador (Modelo del programa)
  • Clase Conexion (Complemento del Modelo).

    La idea es sencilla, estoy utilizando el patrón MVC, para conectar el Controlador con la vista y con el modelo. Ahora, el problema que tengo es el siguiente:

    En Java, basta con pasarse la referencia  del Controlador, al componente que efectuará el evento. bastaría con hacer:

    Código (=java) [Seleccionar]

    public void setControlador(Controller controlador)
    {
       btnRegistrar.addActionListener(controlador);
       btnNuevo.addActionListener(controlador);
       btnSalir.addActionListener(controlador);
     }

    Luego, en la clase Controller:

    Código (=java) [Seleccionar]


    public class Controller implements ActionListener {

    private Formulario vista;
    private Modelo modelo;

     public Controller (Formulario vista, Modelo modelo)
      {
         this.vista = vista;
         this.modelo = modelo;
      }

    @Override
     actionPerformed(ActionEvent e)
      {
         // eventos
      }

    }



    ¿Cómo puedo lograr lo mismo en C#?


    Clases Trabajador (Pojo), Controller (Controlador), RegistrarTrabajador (Modelo), Formulario :

    Código (=csharp) [Seleccionar]

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace RegistroDeUsuarios.pojo
    {
       public class Trabajador
       {
           private string primerNombre;
           private string segundoNombre;
           private string primerApellido;
           private string segundoApellido;
           private string rangoTrabajador;
           private string fechaNacimiento;

           // setters

           public void setPrimerNombre(string primerNombre)
           {
               this.primerNombre = primerNombre;
           }
           public void setSegundoNombre(string segundoNombre)
           {
               this.segundoNombre = segundoNombre;
           }
           public void setPrimerApellido(string primerApellido)
           {
               this.primerApellido = primerApellido;
           }
           public void setSegundoApellido(string segundoApellido)
           {
               this.segundoApellido = segundoApellido;
           }
           public void setRangoTrabajador(string rangoTrabajador)
           {
               this.rangoTrabajador = rangoTrabajador;
           }
           public void setFechaNacimiento(string fechaNacimiento)
           {
               this.fechaNacimiento = fechaNacimiento;
           }

           // getters

           public string getPrimerNombre()
           {
               return this.primerNombre;
           }
           public string getSegundoNombre()
           {
               return this.segundoNombre;
           }
           public string getPrimerApellido()
           {
               return this.primerApellido;
           }
           public string getSegundoApellido()
           {
               return this.segundoApellido;
           }
           public string getRangoTrabajador()
           {
               return this.rangoTrabajador;
           }
           public string getFechaNacimiento()
           {
               return this.fechaNacimiento;
           }

       }
    }


    Clase Controller
    Código (=csharp) [Seleccionar]

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows;
    using RegistroDeUsuarios.pojo;


    namespace RegistroDeUsuarios
    {
       
      public class Controller
       {
           private MainWindow vista;
           private RegistrarTrabajador modelo;
         

          public Controller()
           {

           }
           public Controller(MainWindow vista, RegistrarTrabajador modelo)
           {
               this.vista = vista;
               this.modelo = modelo;
               
           }
           

          public void btnRegistrar_Click(Object sender, RoutedEventArgs e)
          {
              Trabajador trabajador = new Trabajador();
              trabajador.setPrimerNombre(vista.txtPrimerNombre.Text);
              trabajador.setSegundoNombre(vista.txtSegundoNombre.Text);
              trabajador.setPrimerApellido(vista.txtPrimerApellido.Text);
              trabajador.setSegundoApellido(vista.txtSegundoApellido.Text);
              trabajador.setRangoTrabajador(vista.cboRangoTrabajador.SelectedItem.ToString());
              trabajador.setFechaNacimiento(vista.txtFechaNacimiento.Text);
              modelo.registrarTrabajador(trabajador);
          }
          public void btnNuevo_Click(Object sender, RoutedEventArgs e)
          {
              vista.clean();
          }
          public void btnSalir_Click(Object sender, RoutedEventArgs e)
          {
              //Application.Current.Shutdown();
          }
       }
    }



    Clase RegistrarTrabajador:
    Código (=csharp) [Seleccionar]

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using MySql.Data.MySqlClient;
    using RegistroDeUsuarios.pojo;

    namespace RegistroDeUsuarios
    {
       public class RegistrarTrabajador
       {
           public static MySqlConnection conexion = new MySqlConnection();
           public static MySqlCommand comando = new MySqlCommand();
           public static string CadenaDeConexion;

           public void registrarTrabajador(Trabajador trabajador)
           {
               // Aquí se llevara a cabo la conexion
               CadenaDeConexion = "Server=localhost;"
                                   + "Port=3307;"
                                   + "Database=mysql_ifxperu;"
                                   + "Uid=root;"
                                   + "Password=";

               try
               {
                   conexion.ConnectionString = CadenaDeConexion;
               }
               catch (Exception ex)
               {
                   Console.WriteLine(ex.Message);
               }

               try
               {
                   // Abrimos la conexión
                   conexion.Open();
                   // Definimos nuestro Query
                   string query = "insert into empleados VALUES('"+trabajador.getPrimerNombre()+"','"+trabajador.getSegundoNombre()+"','"+trabajador.getSegundoApellido()+"','"+
                       trabajador.getSegundoApellido()+"','"+trabajador.getRangoTrabajador()+"','"+trabajador.getFechaNacimiento()+"')";
                   // Establecemos cuál será la conexión
                   comando.Connection = conexion;
                   // Determinamos el comando [ nuestro query]
                   comando.CommandText = query; //Se le asigna la consulta
                   // Asignamos al objeto MySqlReader la ejecución del comando
                   // En otras palabras, el resultado de la consulta [query]
                   // Se guardará en el MySqlReader
                   comando.ExecuteNonQuery();
                   MessageBox.Show("Alta del empleado satisfactoria.");
               }
               catch (Exception ex)
               {
                   Console.WriteLine(ex.Message);
               }
               finally {
                   conexion.Close();
               }
           }
       }
    }



    Clase Formulario
    Código (=csharp) [Seleccionar]

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;

    namespace RegistroDeUsuarios
    {
       
       public partial class MainWindow : Window
       {
           public MainWindow()
           {
               InitializeComponent();
               cboRangoTrabajador.Items.Add("Administrador");
               cboRangoTrabajador.Items.Add("Vendedor");
               cboRangoTrabajador.Items.Add("Contador");
               cboRangoTrabajador.Items.Add("Tecnico Mantenimiento");
               cboRangoTrabajador.Items.Add("Programador");
               cboRangoTrabajador.Items.Add("Analista");
               cboRangoTrabajador.SelectedIndex = 0;
           }

           public void setControlador(Controller controlador)
           {
               controlador.btnRegistrar_Click(controlador,new RoutedEventArgs());
               controlador.btnNuevo_Click(controlador,new RoutedEventArgs());
               controlador.btnSalir_Click(controlador,new RoutedEventArgs());
           }

           public void clean()
           {
               txtPrimerNombre.Clear();
               txtSegundoNombre.Clear();
               txtPrimerApellido.Clear();
               txtSegundoApellido.Clear();
               txtFechaNacimiento.Clear();
               cboRangoTrabajador.SelectedItem = "Administrador";
               txtPrimerNombre.Focus();
           }
         

       }
    }



    *** UPDATE ***

    He creado una clase principal, que sustituye al Main que genera WPF.

    Código (=csharp) [Seleccionar]

    using System.Windows.Media.Imaging;
    using System.Windows.Media.Media3D;
    using System.Windows.Media.TextFormatting;
    using System.Windows.Navigation;
    using System.Windows.Shapes;
    using System.Windows.Shell;

    namespace RegistroDeUsuarios
    {
       class Principal
       {
           // <summary>
           /// Application Entry Point.
           /// </summary>
           [System.STAThreadAttribute()]
           [System.Diagnostics.DebuggerNonUserCodeAttribute()]
           public static void Main()
           {
               
               MainWindow vista = new MainWindow();
               RegistrarTrabajador modelo = new RegistrarTrabajador();
               Controller control = new Controller(vista, modelo);
               vista.setControlador(control);
               MessageBox.Show("Hola");
               RegistroDeUsuarios.App app = new RegistroDeUsuarios.App();
               app.InitializeComponent();
               app.Run();
           }

       }
    }



    Otra duda, quiero colocar un método en el Formulario, para arrancar la aplicación a demanda. Esto porque en el Main crearé los objetos MainWindow y RegistrarTrabajador, para pasárselos al Controller, para que se asocie a las 2 clases, y el objeto Controller pasárselo por medio de setControlador(Controller controlador) al Formulario. ¿Cómo haría?



    Muchas gracias!
#11
Supongo que para los que recién se inician, les puede ser de ayuda.


Componentes Swing
==================

General:

setToolTipText():    muestra mensaje cuando se coloca el cursor
SwingConstants :    declara un conjunto de constantes enteras para usar con los componentes swing
getSource():       devuelve una referencia del origen del evento
getActionCommand():   devuelve el texto que hay en un JLabel, JButton o en un JTextField

Imagenes:

ImageIcon():       soporta varios formatos dee imagen
getClas():          obtiene una referencia al objeto Class que representa la clase para el objeto q llama al metodo
getResource():       devuelve la ubicacion de su argumento en forma url.

JLabel:

setText():         Le coloca el String que recibe como argumento
getText():         Obtiene el texto que tiene el componente
setIcon():         especifica un objeto Icon a mostrar en un JLabel
getIcon():         obtiene el objeto Icon que esta en un JLabe
setHorizontaAignment():    alinea un JLabel horizontalmente
setVerticalAlignment():    alinea un JLabel Verticalmente

JButton :

setText():         Le coloca el String que recibe como argumento
getText():         Obtiene el texto que tiene el componente
setIcon():         especifica un objeto Icon a mostrar en un JLabel
getIcon():         obtiene el objeto Icon que esta en un JLabe
setRolloverIcon():   imagen a mostrar en el JButton cuando se coloca el cursor sobre el
ActionListener:    Interface de escucha que permite vigilar a un JButton en caso haya una accion sobre el.
ActionEvent:      Cuando ActionListener detecta que hay una accion sobre el, envia un objeto ActionEvent.
actionPerformed():   Este metodo recibe el objeto ActionEvent y en el haremos las acciones que queramos.

JTextField:

setText():         Le coloca el String que recibe como argumento
getText():         Obtiene el texto que tiene el componente
ActionListener:    Interface de escucha que permite vigilar a un JButton en caso haya una accion sobre el.
ActionEvent:      Cuando ActionListener detecta que hay una accion sobre el, envia un objeto ActionEvent.
actionPerformed():   Este metodo recibe el objeto ActionEvent y en el haremos las acciones que queramos.

JPasswordField:

setText():         Le coloca el String que recibe como argumento
getPassword():      Obtiene el password que tiene el componente.
ActionListener:    Interface de escucha que permite vigilar a un JButton en caso haya una accion sobre el.
ActionEvent:      Cuando ActionListener detecta que hay una accion sobre el, envia un objeto ActionEvent.
actionPerformed():   Este metodo recibe el objeto ActionEvent y en el haremos las acciones que queramos.

JCheckBox:

setMaximunRowCount():   establece el maximo de elementos a mostrar en un combo
isSelected():         determina si un objeto JCheckBox esta seleccionado.
getSelectionItem():      devuelve el objeto seleccionado
getSelectionIndex():   devuelve la posicion del objeto seleccionado
setSelectionItem():      establece el objeto seleccionado
setSelectionIndex():   establece el obeto seleccionado por medio de indice
ItemListemer:                   Interface de escucha de un JComboBox, JList.
ItemEvent:                       Cuando se detecta accion en un JComboBox, JList, etc; se envia un evento ItemEvent.
itemStateChanged():        Metodo encargado de desencadenar acciones en un evento tipo ItemEvent.


JRadioButton:

ItemEvent
  • Se tiene que agrupar con un ButtonGroup (javax.swing)


    JList:

    ListSelectionEvent, ListSelectionListener
  • Debe implementar el metodo valueChanged()
    setVisibleRowCount():    muestra la cantidad visible de elementos
    setSelectionModel():    especifica el modelo de seleccion de una JList
    setListData():          elementos a mostrar en el JList
    getSelectedValues():    devuelvo un arreglo Object con los elementos seleccionados
    setFixedCellWidth():   establece la anchura de un objeto JList.
    setFixedCellHeight():   establece la altura de cada elemento en un objeto JList.

    JTextArea

  • Un objeto JTextArea proporciona un área para manipular varias líneas de texto. JTextArea es una subclase de
    JTextComponent, la cual declara métodos comunes para objetos JTextField, JTextArea y varios otros componentes de GUI basados en texto.
  • La clase Boxes una subclase de Container que utiliza un administrador de esquemas BoxLayout para ordenar los
    componentes de la GUI, ya sea en forma horizontal o vertical.
  • El método static createHorizontalBox de Box crea un objeto Boxque ordena los componentes de izquierda a
    derecha, en el orden en el que se adjuntan.
  • El método getSelectedText(que hereda JTextArea de JTextComponent) devuelve el texto seleccionado de un
    objeto JTextArea.
  •  Podemos establecer las políticas de las barras de desplazamiento horizontal y vertical de un objeto JScrollPaneal
    momento de crearlo. Los métodos setHorizontalScrollBarPolicy y setVerticalScrollBarPolicy de JScrollPane
    pueden usarse para modifi car las políticas de las barras de desplazamiento en cualquier momento.
    setWrapStyleWord():      establece el salto de linea entre palabras cuando el texto ocupe el ancho del area


    Eventos de mouse
    ================

  • Las interfaces MouseListener y MouseMotionListener se utilizan para escuchar los eventos de mouse.
  • La interface MouseInputListener extiende a MouseListener y MouseMotionListener.
  • Cada uno de los métodos manejadores de eventos del ratón recibe un objeto MouseEvent como argumento. Un
    objetoMouseEvent contiene información acerca del evento de ratón que ocurrió, incluyendo las coordenadas xy
    yde la ubicación en donde ocurrió el evento. Estas coordenadas se miden empezando desde la esquina superior
    izquierda del componente de la GUI en donde ocurrió el evento.
  • La interfaz MouseWheelListenerpermite a las aplicaciones responder a la rotación de la rueda de un ratón.
  • Los componentes de la GUI heredan los métodos addMouseListener y addMouseMotionListener de la clase Component.
  • Podemos extender una clase adaptadora para que herede la implementación predeterminada de cada método, y por
    consiguiente, podemos sobrescribir sólo el (los) método(s) necesario(s) para el manejo de eventos.
  • El método getClickCount de MouseEvent devuelve el número de clics de los botones del ratón.
  • Los métodos isMetaDown e isAltDown determinan cuál botón del ratón oprimió el usuario.
    getX():            devuelve el punto x sobre el que está el mouse
    getY():            devuelve el punto y sobre el que está el mouse
    isControlDown():   determina si se ha presionado la tecla Ctrl.

    Eventos de tecla
    ================
    La interfaz KeyListenerse utiliza para manejar eventos de teclas, que se generan cuando se oprimen y sueltan las
    teclas en el teclado. El método addKeyListenerde la clase Componentregistra un objeto KeyListenerpara un
    componente.
  • El método getKeyCode de KeyEvent obtiene el código de tecla virtual de la tecla oprimida. La clase KeyEvent
    mantiene un conjunto de constantes de código de tecla virtual que representa a todas las teclas en el teclado.
  • El método getKeyText de KeyEvent devuelve una cadena que contiene el nombre de la tecla que se oprimió.
  • El método getKeyChar de KeyEvent obtiene el valor Unicode del carácter escrito.
  • El método isActionKey de KeyEvent determina si la tecla en un evento fue una tecla de acción.
  • El método getModifiers de InputEvent determina si se oprimió alguna tecla modificadora (como Mayús, Alt y
    Ctrl ) cuando ocurrió el evento de tecla.
  • El método getKeyModifiersText de KeyEvent produce una cadena que contiene los nombres de las teclas modificadoras que se oprimieron.


    PaintComponent() y Clase Graphics:
    =======================

  • Los componentes ligeros de Swing que extienden a la clase JComponent contienen el método paintComponent,
    el cual se llama cuando se muestra un componente ligero de Swing. Al sobrescribir este método, puede especificar
    cómo dibujar fi guras usando las herramientas de gráfi cos de Java.
  • Al personalizar un objeto JPanelpara usarlo como un área dedicada de dibujo, la subclase debe sobrescribir el
    métodopaintComponenty llamar a la versión de paintComponentde la superclase como la primera instrucción en
    el cuerpo del método sobrescrito.
  • Las subclases de JComponentsoportan la transparencia. Cuando un componente es opaco, paintComponentborra
    el fondo del componente antes de mostrarlo en pantalla.
  • La transparencia de un componente ligero de Swing puede establecerse con el método setOpaque(un argumento
    falseindica que el componente es transparente).
  • La clase Point(paquete java.awt) representa una coordenada x-y.
  • La clase Graphics se utiliza para dibujar.
  • El método getPoint de MouseEvent obtiene el objeto Point en donde ocurrió un evento de ratón.
  • El método repaint(heredado directamente de la clase Component) indica que un componente debe actualizarse en
    la pantalla lo más pronto posible.
  • El método paintComponentrecibe un parámetro Graphics, y se llama de manera automática cada vez que un
    componente ligero necesita mostrarse en la pantalla.
  • El método fillOval de Graphics dibuja un óvalo relleno. Los cuatro parámetros del método representan el cuadro
    delimitador en el cual se muestra el óvalo. Los primeros dos parámetros son la coordenada xsuperior izquierda y la
    coordenada ysuperior izquierda del área rectangular. Las últimas dos coordenadas representan la anchura y la altura
    del área rectangular.

    Layouts
    =============

  • Los administradores de esquemas ordenan los componentes de la GUI en un contenedor, para fines de presentación.
  • Todos los administradores de esquemas implementan la interfaz LayoutManager(paquete java.awt).
  • El método setLayoutde la clase Container especifica el esquema de un contenedor.
  • FlowLayout es el administrador de esquemas más simple. Los componentes de la GUI se colocan en un contenedor,
    de izquierda a derecha, en el orden en el que se agregaron al contenedor. Cuando se llega al borde del contenedor,
    los componentes siguen mostrándose en la siguiente línea. La clase FlowLayoutpermite a los componentes de
    la GUI alinearse a la izquierda, al centro (el valor predeterminado) y a la derecha.
  • El método setAlignmentde FlowLayout cambia la alineación para un objeto FlowLayout.
  •  El administrador de esquemas BorderLayout(el predeterminado para un objeto JFrame) ordena los componentes
    en cinco regiones: NORTH,SOUTH,EAST,WEST y CENTER.NORTH.
  • Un BorderLayout limita a un objeto Container para que contenga cuando mucho cinco componentes; uno en
    cada región.
  •  El administrador de esquemas GridLayout divide el contenedor en una cuadrícula, de manera que los componentes
    puedan colocarse en filas y columnas.
  • El método validate de Container recalcula el esquema del contenedor, con base en el administrador de esquemas
    actual para ese objeto Container y el conjunto actual de componentes de la GUI que se muestran en pantalla.
#12
Hola. Estoy haciendo un formulario que simula una reclutación de programadores Jr para luego enviar sus datos a un email (uso PHPMailer).

EDITADO. El problema era con php.ini.

Bien, pues cuando lanzo la web, sucede que a partir de la línea 169:

Código (=php) [Seleccionar]

else if($age < 18 || age > 60)


Me imprime todo lo que hay en el script, desde esa línea hasta el final.

He revisado el código y no veo algún error de sintaxis ni de cierre de llaves. Estoy cansado, es posible que haya omitido algo, pero no soy capáz de verlo.


¿Pueden checkear el code?



Gracias.
#13
Java / [Tema Eliminado]
10 Febrero 2013, 21:09 PM
  • Tema eliminado.
#14
Hola, buenos días y gracias por ayudarme con mi problema :)

Soy nuevo en Java, estoy aprendiendo con el libro Como programar en Java de deitel, ya estoy en el capítulo 8 de 30 xD

Verán el problema es este:

Escriba una aplicación que simule el lanzamiento de monedas. Deje que el programa lance una moneda cada vez que el usuario seleccione la opción del menú "Lanzar moneda". Cuente el número de veces que aparezca cada uno de los lados de la moneda. Muestre los resultados. El programa debe llamar a un método separado, llamado tirar, que no tome argumentos y devuelva falseen caso de cara, y true en caso de cruz.

Bueno pues he estado realizando el código, pero tengo un problema con el do -while, se supone que el do debe interpretar el final de ese bloque al encontrar el ";" seguido del while.

El código del do-while lo he hecho en un método aparte, pero al intentar cerrar el método con la llave de cierre, la llave cierra la llave del do "{", lanzando así errores.

Uso Netbeans y DrJava, Por favor disculpen si la duda les parece muy tonta, recién estoy aprendiendo.


Code:

Código (java) [Seleccionar]
package juegomoneda;

import java.util.Scanner;
import java.util.Random;

public class LanzarMoneda {

private int cara;
private int cruz;
Scanner t = new Scanner(System.in);

public void jugar()
{
// creamos la variable que represente la primera decision(opc)
String opc;

bienvenida(); // llamamos al metodo bienvenida para que de la bienvenida al usuario

// pedimos que se elija una opcion
System.out.println("Eliga una opcion");
System.out.println("Escriba 'L' para lanzar la moneda o");
System.out.println("Escriba 'S' para salir");
opc = t.nextLine();

// si la opcion elegida es 'Salir' imprimimos un mensaje de salida
if("S".equals(opc))
{
System.out.println("Ha decido salir");
System.out.println("No se inicio el juego");

// si la opcion elegida es 'Lanzar' tiramos la moneda
if("L".equals(opc))
{
// llamamos al metodo tirar que devuelve true si cae cara o false si cae cruz
// almacenamos el resultado en la variable boolean resultado, si el valor devuelto
// es true, aumentamos cara en 1, y si es false aumentamos cruz en 1

boolean resultado = tirar();
if(resultado == true)
cara++;
else
cruz++;

}
segundoTiro();

}
}

// metodo que da la bienvenida al juego

public void bienvenida()
{
System.out.println("Bienvenido al juego 'Lanza la moneda'");
}

// metodo tirar, tira una moneda, si cae cara devuelve true, si cae cruz devuelve false

public boolean tirar()
{
Random generadorAleatorio = new Random();
int moneda = 1 + generadorAleatorio.nextInt(2);

if(moneda == 1)
return true;
else
return false;
}

public void segundoTiro()
{
String opc2;
boolean resultado;

do{
// y preguntamos al usuario si quiere lanzarla nuevamente

System.out.println("Desea Lanzar la moneda otra vez");
System.out.println("'Y' para si y 'N' para no");
opc2 = t.nextLine();

if("Y".equals(opc2)){
// Hacemos lo mismo, llamar al metodo tirar y aumentar si es cara o cruz
resultado = tirar();
if(resultado == true)
cara++;
else
cruz++;}
while("Y".equals(opc2)); // Se repite el lanzamiento mientras la opcion elegida sea //'Si, Lanzar'

// Si despues del 1er tiro el usuario no quiere seguir jugando, imprimimos un //mensaje de salida
// e imprimimos los resultados del juego

if("N".equals(opc2))
{
System.out.println("Ha decido salir");
System.out.println("Usted saco "+cara+ "caras y "+cruz+" cruces");
}
} // Esta llave debería indicar el fin del método segundoTiro
} // Y esta el fin de la clase

#15
*****