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ú

Mensajes - Usuario Invitado

#321
Desarrollo Web / Re: formulario html
21 Marzo 2015, 21:24 PM
¿Conforme añades registros se muestren en una tabla? ¿Con o sin BBDD? Asumo que es sin BBDD por la simpleza de tu enunciado. Te pondré un ejemplo en mi malísimo PHP xD, porque el 99% de los temas en "Desarrollo web" son en PHP (casi no veo Java EE, Python o Ruby).

index.html

Código (html4strict) [Seleccionar]
<section class="panel">
   <section class="panel-head">
       <span class="panel-title">Insertar registros</span>
   </section>

   <section class="panel-body">
       <input id="id" name="id" class="txt txt-id" placeholder="ID del producto"/>
       <input id="name" name="name" class="txt txt-name" placeholder="Nombre"/>
       <input id="description" name="description" class="txt txt-description" placeholder="Descripción"/>
       <input id="price" name="price" class="txt txt-price" placeholder="Precio"/>
       <button id="insert" class="btn btn-primary">Insertar</button>
       <button id="clean" class="btn btn-default">Limpiar</button>
   </section>
</section>

<section class="table-wrapper">

</section>


script.js

Código (javascript) [Seleccionar]
window.addEventListener("load", init);

function init() {
   var txtId = document.querySelector(".txt-id");
   var txtName = document.querySelector(".txt-name");
   var txtDescription = document.querySelector(".txt-description");
   var txtPrice = document.querySelector(".txt-price");
   document.querySelector("#insert").addEventListener("click", handleInsert);

   function handleInsert() {
       var formData = new Object();
       formData["id"] = txtId.value;
       formData["name"] = txtName.value;
       formData["description"] = txtDescription.value;
       formData["proce"] = txtPrice.value;
       
       sendByAjax(formData);
   }

   function sendByAjax(data) {
       var request = nre XMLHttpRequest();
       request.open("POST", "/insert-product", true);
       request.addEventListener("readystatechange", function() {
          if(request.readystatechange != 4 || request.status != 200) {
              // en caso de error, devolver algo del backend
              alert(request.responseText);
          } else {
              // en caso de exito, el backend devuelve la tabla con todos los elementos
              document.querySelector(".table-wrapper").innerHTML = request.responseText;
              resetForm();
          }
       });
       request.send("data="+data);
   }

   function resetForm() {
       txtId.value = "";
       txtName.value = "";
       txtDescription.value = "";
       txtPrice.value = "";
       txtId.focus();
   }
   
}


insert.php

Código (php) [Seleccionar]
<?php
/** insert.php
 * @Description This script store the new record into user session
 * and return the table with all products
 */
 
if(!isset($_SESSION))
    
session_start();
if(!isset(
$_SESSION["products"]))
    
$_SESSION["products"] = array();

// convierte el JSON a array asociativo
$data json_decode($_POST["data"], true);
array_push($_SESSION["products"], $data);
echo 
"/path/to/table.php"// devuelve la tabla actualizada


table.php

Código (php) [Seleccionar]
<?php
/** table.php
 * @Description This script create a table with all store products
 */
 
if(!isset($_SESSION))
    
session_start();
var 
$products NULL;
if(!isset(
$_SESSION["products"]))
    
$products $_SESSION["products"];

if (!
is_null($products)) {
    echo 
"<table>".
    echo 
"<thead>".
    echo 
"<tr>".
    echo 
"<th>ID</th>".
    echo 
"<th>Nombre</th>".
    echo 
"<th>Descripción</th>".
    echo 
"<th>Precio</th>".
    echo 
"</tr">.
    echo 
"</thead>".
    echo 
"<tbody>".
        for(
$product in $products) {
            for(
$product as $key => $value) {
                echo 
"<tr>".
                echo 
"<td>$value</td>".
                echo 
"</tr>"
            
}
        }
    echo 
"</tbody>".
    echo 
"</table>";
}


Obviamente cuando cierres sesión o salgas de la página actual, la destruyes la sessión:

Código (php) [Seleccionar]
session_destroy();


Te aviso que lo he hecho muy rápido y al ojo en Notepad++, no lo he probado (no tengo ni Apache instalado xDD), así que es muy probable que haya errores.

Saludos.
#322
Java / Re: Ayuda!!!!!!!!!!!
21 Marzo 2015, 18:57 PM
Te diré lo que tienes que estudiar e investigar: UIManager.

Saludos.
#323
Java / Re: JOptionPane extendido
21 Marzo 2015, 17:10 PM
Hola alfrosende, buen día,

Lo mejor para lo que deseas hacer es no extender de JOptionPane. Una razón es que si el rastreo de pila es muy grande el JOptionPane lo será también. Aquí habría que usar JScrollPane que englobe por ejemplo un JTextArea para mostrar el rastreo con barras de desplazamiento.

Lo mejor es que hagas tu propio "Error dialog". Yo simplemente lo haría con un pequeño JPanel de pequeñas dimensiones en el cual hayan los siguientes elementos:

  • Label para el título del error.
  • JPanel que contendrá el JTextArea donde se mostrará el error.

    He creado un ejemplo práctico para que veas cómo se hace.




    UPDATE



    El código fuente lo pueden encontrar desde mi Github: JErrorDialog

    Es un JDialog en donde se muestra el rastreo de pila. Tiene sobrecarga de constructor y además métodos para agregar la Excepción, titulo del diálogo y el texto informativo de la excepción.

    Una imagen de cómo queda:




    MODO DE USO




    Vas a instanciar a JErrorDialog y le pasas los siguientes parámetros:

  • El padre (JFrame o Frame, para Frame no estoy seguro si corre bien)
  • El título de la ventana
  • La información de la excepción
  • La excepción

    Código (java) [Seleccionar]
    JErrorDialog dialog = new JErrorDialog(this);
    dialog.setTitle("Something was wrong"); // window title
    dialog.setInfo("Error converting String to Integer"); // error info
    dialog.setException(e); // Exception
    dialog.showDialog(); // build and show the dialog


    O de la manera rápida:

    Código (java) [Seleccionar]
    new JErrorDialog(this, "Something was wrong", "Error converting String to Integer", e).showDialog();


    Si desean bajar el JAR para usarlo directamente, puede descargarlo desde AQUÍ


    Saludos.
#324
Java / Re: Meter un Frame dentro de otro Frame
21 Marzo 2015, 13:12 PM
Investiga por tu cuenta tambié... Un poco más abajo en otros temas he puesto códigos para leer ficheros. Échales un vistazo y aplícalo a tu aplicación.
#325
Hola Pablo,

¿Has revisado que quizás en lugar de instalarlo en la SD, el emulador lo instala en el teléfono?

¿Has conectado el teléfono en modo Debug? Si lo conectas en modo USB, la SD de desmontará y no te permitirá instalar la app.

#326
Java / Re: Meter un Frame dentro de otro Frame
21 Marzo 2015, 11:05 AM
Cuando se dice que no utilices Swing se hace referencia a que no utilices controles gráficos de Swing. SwingUtilities es simplemente una clase utilitaria.

Tampoco hay que irse por los extremos xD

Respecto a lo otro, sí hay que hay que hacer un método que actualice las provincias y poblaciones.
#327
El usuario de StackOverFlow (muy buena fuente cuando tengas dudas), dice que posiblemente la SD card no está montada. También dice que copies el APK en la SD card, desconectes el teléfono y ejecutes la aplicación directamente desde el teléfono.

Saludos.
#328
Ya veo. Gracias por la aclaración.

Saludos.
#329
Buenas tardes,

He tratado de eliminar mi website de mi perfil pero sigue persistida. ¿Bug o así lo han programado?
#330
Java / Re: Meter un Frame dentro de otro Frame
20 Marzo 2015, 15:50 PM
Olvidaba que es AWT. Reemplaza gui.dispose por:

Código (java) [Seleccionar]
Window window = SwingUtilities.getWindowAncestor(gui);
window.dispose();


Respecto a lo otro, si el docente les ha dado esas interfaces en un JAR pues debes usarlas y no hacerme caso cuando te dije que extendieras de LinkedHashMap.