Mostrar Mensajes

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


Mensajes - Alex Rodríguez

Páginas: 1 ... 11 12 13 14 15 [16] 17 18 19 20 21 ... 93
301
Hola dferna todo correcto

Podríamos haber declarado Profesor pe1 = new ProfesorEmerito("David", 30, 10, 3); donde el tipo estático es Profesor y el tipo dinámico ProfesorEmerito

Saludos

302
Hola dferna, todo bien

Si quisiéramos, podríamos declarar como tipo estático Profesor y como tipo dinámico ProfesorEmerito así:

Profesor pe1 = new ProfesorEmerito("David", 30, 10, 3);

Saludos

303
Hola dferna

Para la primera pregunta la respuesta es sí, puedes ver la explicación en https://www.aprenderaprogramar.com/foros/index.php?topic=1147.0

La segunda pregunta está correcta, la respuesta es sí

El código y respuesta a la pregunta sobre el código también está correcta

Saludos

304
Hola dferna el código se ve bien trabajado y aplica bien los conceptos

En la clase EnvioDeProductos tienes este método


   public ArrayList<Producto> crearEnvio(Producto producto){
      listaProductos.add(producto);
      return (ArrayList<Producto>) listaProductos;
   }

Aquí veo algunas cosas que serían mejorables para un buen diseño

En primer lugar si el método se llama crearEnvio, sería de esperar que fuera para crear un envío. Sin embargo hace otras cosas, por eso diría que el método no está bien nombrado.

El método añade un producto a un envío, y además devuelve la lista de productos. Esto no lo veo del todo correcto. Cada método debe tener un cometido concreto, por tanto debería haber un método getEnvio para recuperar el envío y otro método addProducto para añadir un producto.

Es muy importante nombrar correctamente a las clases y a los métodos

En los métodos toString sobrecargados, para reutilizar código lo ideal es invocar super para recuperar el código de las superclases. En realidad en este ejercicio no se pedía utilizar el método toString ya que este método no se explica hasta la entrega CU00694B

Saludos

305
Hola maximuzve, todas estas cuestiones están explicadas en el curso de fundamentos de programación disponible en http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=28&Itemid=59

Este hilo también te puede orientar sobre fundamentos: https://www.aprenderaprogramar.com/foros/index.php?topic=1313.0

Saludos

306
Hola LoboBlanco, puedes hacer esto con JavaScript y Ajax, basándote en el control de eventos. En los cursos tienes toda la información

Curso JavaScript: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=78&Itemid=206

Curso Ajax: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=83&Itemid=212

Saludos

307
Hola, te puedes basar en la idea que se desprende de este fragmento de código basado en FocusTraversalPolicy:

Código: [Seleccionar]
List<Component> elementList = new ArrayList<Component>();
elementList.Add(element1);
elementList.Add(element2);
...
elementList.Add(elementx);
setFocusTraversalPolicy(new CustomFocusTraversalPolicy());


private class CustomFocusTraversalPolicy extends FocusTraversalPolicy {   

    public Component getComponentAfter(Container focusCycleRoot,Component aComponent)    {   
        int currentPosition = elementList.indexOf(aComponent);
        currentPosition = (currentPosition + 1) % elementList.size();   
        return (Component)elementList.get(currentPosition);   
    }   
    public Component getComponentBefore(Container focusCycleRoot,Component aComponent)    {
        int currentPosition = elementList.indexOf(aComponent);
        currentPosition = (elementList.size() + currentPosition - 1) % elementList.size();   
        return (Component)elementList.get(currentPosition);   
    }
    public Component getFirstComponent(Container cntnr) {
        return (Component)elementList.get(0);
    }
    public Component getLastComponent(Container cntnr) {
        return (Component)elementList.get(elementList.size() - 1);
    }
    public Component getDefaultComponent(Container cntnr) {
        return (Component)elementList.get(0);
    }
}

Aplicado a tu código quedaría así:

Código: [Seleccionar]
import javax.swing.*;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.BorderLayout;
import java.awt.Cursor;
import java.awt.FocusTraversalPolicy;
import java.awt.Container;
import java.awt.Component;
import java.util.List;
import java.util.ArrayList;

public class Pantalla extends JFrame{
    private static final long serialVersionUID = 1L;
    private JTextField txtPrimeraFactura;
    private JTextField textField_Segundafactura;
    private JLabel lblResultado;
    List<Component> elementList;
    //----------Pantalla----------------------------   
    public static void main(String[] ar) {
        Pantalla formulario1=new Pantalla();
        formulario1.setBounds(400,200,450,450);
        formulario1.setVisible(true);
        formulario1.setResizable(false);                                       

    }
    //--------Titulo Pantalla-------------
    public Pantalla() {
        setAutoRequestFocus(false);

        getContentPane().setFocusCycleRoot(true);
        setTitle("Facturas Medicas");
        setResizable(false);                                       
        setVisible(true);                                       

        //---------Tengo 429----------------------------------       
        JLabel lblTengoPara = new JLabel("Tengo 429.25 para gastar");
        lblTengoPara.setVerticalAlignment(SwingConstants.TOP);
        lblTengoPara.setVerticalTextPosition(SwingConstants.TOP);
        lblTengoPara.setBounds(122, 11, 187, 31);
        lblTengoPara.setForeground(Color.BLUE);
        getContentPane().add(lblTengoPara);

       
        //---------Entrada Datos----------------------------------           

        txtPrimeraFactura = new JTextField();
        txtPrimeraFactura.setToolTipText("");
        txtPrimeraFactura.setCursor(Cursor.getPredefinedCursor(Cursor.TEXT_CURSOR));
        txtPrimeraFactura.setFocusCycleRoot(true);
        txtPrimeraFactura.setBounds(191, 53, 86, 20);
        JLabel lblPrimeraFactura = new JLabel("Primera Factura:");
        lblPrimeraFactura.setFocusCycleRoot(true);
        lblPrimeraFactura.setBounds(28, 56, 101, 14);
        getContentPane().setLayout(null);
        getContentPane().add(lblPrimeraFactura, BorderLayout.WEST);
        getContentPane().add(txtPrimeraFactura, BorderLayout.CENTER);

        textField_Segundafactura = new JTextField();
        textField_Segundafactura.setFocusCycleRoot(true);
        textField_Segundafactura.setBounds(191, 78, 86, 20);
        JLabel lblSegundaFactura = new JLabel("Segunda Factura:");
        lblSegundaFactura.setFocusCycleRoot(true);
        lblSegundaFactura.setBounds(28, 81, 101, 14);
        getContentPane().setLayout(null);
        getContentPane().add(lblSegundaFactura, BorderLayout.WEST);
        getContentPane().add(textField_Segundafactura, BorderLayout.CENTER);

        // ---------------Restar----------------------------------------------------                         
        JButton btnRestar = new JButton("Restar");
        btnRestar.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    double resto;
                    double total= 429.25;
                    int lblPrimeraFactura=Integer.parseInt(txtPrimeraFactura.getText());
                    int lblSegundaFactura=Integer.parseInt(textField_Segundafactura.getText());
                    resto= total - (lblPrimeraFactura+lblSegundaFactura);
                    lblResultado.setText("Resultado:"+resto);

                    if (resto<0)
                        lblResultado.setText("No puede ser negativa la suma de las facturas:"+resto);
                    lblResultado.setForeground(Color.red);

                }

            });
        // ------Resultado-------------------------------------------------
        btnRestar.setBounds(191, 135, 89, 23);
        getContentPane().add(btnRestar);
        lblResultado= new JLabel("Resultado:");
        lblResultado.setBounds(10, 378, 384, 14);
        getContentPane().add(lblResultado);
        lblResultado.setForeground (Color.magenta);

        //--------Finalizar-----------------------------------------------       
        final JButton btnFinalizar = new JButton("Finalizar");
        btnFinalizar.setFocusCycleRoot(true);
        btnFinalizar.setBounds(188, 222, 89, 23);
        getContentPane().add(btnFinalizar);
        btnFinalizar.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent arg0) {
                    System.exit(0);
                }
            });

        elementList = new ArrayList<Component>();
        elementList.add(txtPrimeraFactura);
        elementList.add(textField_Segundafactura);
        setFocusTraversalPolicy(new CustomFocusTraversalPolicy());
    }

    private class CustomFocusTraversalPolicy extends FocusTraversalPolicy {   

        public Component getComponentAfter(Container focusCycleRoot,Component aComponent)    {   
            int currentPosition = elementList.indexOf(aComponent);
            currentPosition = (currentPosition + 1) % elementList.size();   
            return (Component)elementList.get(currentPosition);   
        }   

        public Component getComponentBefore(Container focusCycleRoot,Component aComponent)    {
            int currentPosition = elementList.indexOf(aComponent);
            currentPosition = (elementList.size() + currentPosition - 1) % elementList.size();   
            return (Component)elementList.get(currentPosition);   
        }

        public Component getFirstComponent(Container cntnr) {
            return (Component)elementList.get(0);
        }

        public Component getLastComponent(Container cntnr) {
            return (Component)elementList.get(elementList.size() - 1);
        }

        public Component getDefaultComponent(Container cntnr) {
            return (Component)elementList.get(0);
        }
    }


}

Saludos

308
Hola alefaletti, en el navegador donde lo he probado no se ve bien (el espacio derecho se ve desplazado debajo). Mira estos enlaces donde hay algunas explicaciones sobre este ejercicio:

https://www.aprenderaprogramar.com/foros/index.php?topic=1647.0

https://www.aprenderaprogramar.com/foros/index.php?topic=3862.0

Saludos

309
Hola, supongo que la consulta se refiere a obtener el código fuente (¿desencriptar?) del juego. Esto depende de si el juego está disponible en alguna versión compilada. A partir de los ejecutables puede intentar obtenerse el código fuente con lo que se llama ingeniería inversa (no es sencillo). Si no está disponible en versión compilada, sino simplemente on-line es posible que no se pueda obtener el código fuente (no podemos acceder al código que maneja el intérprete en el servidor, sólo a sus resultados).

De cualquier manera no parece sencillo, el juego parece bastante complicado.

Saludos

310
Hola, puede intentarse lo siguiente: colocar un control de tipo "OLE control" en el formulario.

En tiempo de diseño puede elegirse como fuente de los datos para el control la ruta del archivo .doc

En tiempo de ejecución (en código)

OLE1.SourceDoc = "C:\CarpetaArchivos\mi_archivo.doc"

Otra opción sería añadir un control WebBrowser y un código similar a:

Private Sub Form_Load()
WebBrowser1.Navigate "c:\a\user.doc"
End Sub

Saludos

311
Hola, la ruta //www.aprenderaprogramar.com/ es aceptada por un navegador como https://www.aprenderaprogramar.com/

En el caso que has indicado, puede existir una redirección que haga que una dirección sea redirigida por el servidor a otra dirección (eso es lo que se me ocurre que pueda suceder)

Saludos

312
Comunidad / Re:Agradecimientos
« en: 16 de Abril 2017, 19:29 »
Hola dferna, en primer lugar darte las gracias por tus palabras. A las personas que preparan los cursos, ayudan en los foros, mantienen la página web, etc. estoy seguro les resultarán gratificantes. A las personas que como tú completan cursos, usan materiales del portal, etc. les hacemos algunas peticiones. En primer lugar, que nos ayuden en los foros respondiendo a otros usuarios sobre preguntas en las que se tenga algo de conocimiento (no hace falta ser un experto para responder. Más que ser experto, hace falta tener la voluntad de leer, revisar, etc.). En segundo lugar, que cuando puedan (en casos como el tuyo en que indicas que no se tienen ingresos) colaboren haciendo una aportación económica. Ya muchas personas lo han hecho cuando han empezado a trabajar y gracias a ello vamos tirando y pudiendo mantener el portal web operativo. Y en último lugar, que si tienen alguna idea o quieren colaborar de alguna manera adicional, que contacten a través del correo electrónico (ver el apartado de contacto de la página principal).

Un abrazo

313
He visto este ejemplo de cómo calcular diferencias entre fechas-horas, lo dejo por si le sirve a alguien:

Dim startTime As New DateTime(2069, 9, 19, 10, 30, 0)     ' 10:30 AM de un año
Dim endTime As New DateTime(2069, 9, 20, 2, 0, 0)     ' 2:00 AM del día siguiente

Dim duration As TimeSpan = endTime - startTime        'Calcular la diferencia entre ambas fechas

Console.WriteLine(duration)

Resultado en horas minutos segundo:

15:30:00

Si se quiere convertir el resultado a minutos se puede usar la propiedad TotalMinutes de las variables TimeSpan

Console.WriteLine(duration.TotalMinutes)

Resultado:

930

314
Hola duralai, supongo que hay varias maneras de hacer esto que propones. Una que se me ocurre sería preparar un script en php que se ejecute con la periodicidad que tú indiques a través de una tarea programada (CronJob) en el servidor, pero esto puede ser un poco complicado si no se tienen conocimientos.

Otra opción que se me ocurre es que tú introduzcas las referencias de las cosas que deben cambiar como referencias a ser extraidas con Ajax desde un archivo xml ó json. De esta forma se generaría el código html que deseas cargándolo desde un archivo xml ó json donde deberías introducir la información.

Puedes echarle un vistazo al curso de Ajax y los ejemplos que hay a ver si te sirve: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=83&Itemid=212

Saludos

315
Hola andrescamilo.gm, aquí encontrarás personas que intentan o intentamos ayudar de forma voluntaria a otras en la medida de nuestras posibilidades, a través de los foros. Buscar gente afín en un ciudad puede hacerse de muchas maneras (desde poner carteles hasta poner anuncios en la web). Si quieres puedes poner un mensaje en el foro de todo un poco con el título "Busco programadores para compartir conocimiento en Medellín" o algo así, no es seguro que obtengas respuesta pero puedes probar si lo deseas.

Saludos.

317
Hola Jesu, es importante que sigas las indicaciones que se dan en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

- No escribas el título de los temas en mayúsculas
- Escribe el código de los ejercicios completo, en lugar de 642B lo correcto es CU00642B
- Revisa lo escrito pulsando previsualizar antes de publicar (así evitas que quede mal lo publicado)

En el ejercicio tienes cosas que mejorar:

En la clase Casa no debes tener un método setNumTelevisores porque numTelevisores no es un atributo de esta clase, por tanto no debe existir un set si no es atributo de la clase.

En este momento del curso no se pide usar un método main, de hecho se recomienda no usarlo, ya que lo que se recomienda es ir siguiendo el curso paso a paso.

Revisa este hilo donde hay varias indicaciones de interés sobre este ejercicio: https://www.aprenderaprogramar.com/foros/index.php?topic=1238.0

Saludos

318
Hola, para escribir en los foros es importante poner los títulos con la referencia adecuada. Recomendamos leer https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

Sobre la duda planteada, leer este hilo seguramente te aclare algo: https://www.aprenderaprogramar.com/foros/index.php?topic=1924.0

Saludos

319
Hola, si se sigue el ejemplo que hay en https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=219:matrices-o-arrays-de-controles-arreglos-en-visual-basic-y-vbnet-concepto-y-ejemplo-de-codigo-cu00320a&catid=37:curso-aprender-a-programar-visual-basic-desde-cero&Itemid=61 en principio debe de poder accederse a los arrays de controles desde cualquier procedimiento por estar declarados como atributos de clase.

Lo que se puede hacer es declarar un array de dimensiones muy grandes (si se desconoce la dimensión definitiva) y luego usar aquellas dimensiones que nos sean útiles, dejando sin utilizar las sobrantes

Saludos

320
Hola, en este hilo se indica cómo pegar código en los foros: https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

En este hilo hay una referencia a CurrentCell para actualizar datagridview que quizás sea útil

Saludos

Páginas: 1 ... 11 12 13 14 15 [16] 17 18 19 20 21 ... 93

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".