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 - alfrosende

#1
Hola a toda la comunidad. Estoy recien empezando en esto del desarrollo web y decidí basarme en Spring framework para desarrollar mis aplicaciones con java, y en el motor de plantillas ThymeLife.

Les pongo en contexto la aplicación de practica que estoy realizando para poder plantearles mi duda luego.

Tengo un formulario para consultar las compras que ha realizado un cliente de un determinado articulo. Tengo una base de datos bien sencilla con 3 tablas, Cliente(id, desc), Articulos(id, descripcion, precio), y compras(nroCompra, idCliente, idArticulo, fecha, cantidad).

En mi formulario web tengo un input para ingreso de cliente, otro para ingreso de articulo, y un submit para consultar las compras. Tengo un controlador para dicha vista y no tengo ningun problema para hacer la consulta (el controlador llama a un servicio que me devuelve los datos perfectamente y abro otra vista con la consulta), hasta aqui ningun problema.

El asunto es que quiero darle cierta funcionalidad basica a dicho formulario y empiezo a derrapar.

La funcionalidad es que al lado tanto del input de cliente como del de articulo tengo otro input para cargar la descripcion del cliente o articulo digitado en los input, por ejemplo, al perder el foco del input de cliente, quiero acceder a la base de datos, comprobar que exista el cliente, y traerme la descripcion para cargar el otro input.

Se que la perdida de foco se puede manejar con una funcion de javascript blur, pero no se como llamar un metodo de mi controlador sin que me devuelva una vista, ya que no estoy relaizando el submit, y todos mis metodos de controlador devuelven un model o model and view que me llaman a un mapping devilviendo un vista.

Creo que es claro lo que quiero hacer, pero no estoy tan seguro que sea clara la parte en la que me mareo, jaja, si alguien puede primero entenderme, y luego brindarme algunos conceptos que me aclaren la situacion y algun ejemplo desde ya muy agradecido.

Saludos!!!!
#2
Java / Problemas en JTable con CellEditor
4 Agosto 2016, 17:48 PM
Hola a toda la comunidad, les comento mi problema (trabajo en NetBeans con Swing y estoy aprendiendo).

Tengo creada en un JForm una JTable con 2 columnas, una que recibe un "Titulo" de la fila, y la segunda que carga el valor de ese dato (que puede ser numerico o string) y esa segunda columna aparte es editable.

Ej de estructura:
Dato      Valor
Marca    Mercedes
Modelo   Benz
Año        2005
Valor      30.000,50

Tengo creado mi TableModel, un renderer propio que determina si el valor es String o Numerico y lo muestra segun el caso alineado a la derecha o a la izquierda, y en caso de los numericos formateado como lo muestro en la columna valor (los datos se visualizan bien ese no es mi problema).
Mi problema es a la hora de la edición y setear el editor de la columna.
Yo dependiendo al igual que en el renderer del tipo de dato (String o numerico), quiero devolver un componente propio que uso en varios proyectos que es un JTDecimal o JTText que ambos tienen una propiedad SetMaxCharacters para indicarle el maximo largo, y en el caso del JTDecimal tambien setea el numero de decimales que acepta y controla no se ingresen letras, ni mas de un punto, etc.

Problema 1: En mi formulario de prueba cuando cambio el dato, queda grabado bien en memoria pero en la grilla no visualizo el cambio, osea, si cambio el valor de año a 2016, cuando apreto enter me sigue mostrando 2005, pero si con un boton levanto en JOptionPane los datos de la grilla me dice 2016.

Problema 2: A pesar de estar devolviendo los componentes que menciono, no logro que se comporten como lo hacen en los programas cuando los agrego al formulario, osea no controla el ingreso de letras en el caso del JTDecimal, no los largos seteados en la propiedad MaxCharacters.

Les dejo el codigo de mi editor por si alguien puede iluminarme, desde ya muchas gracias.

P.D.: Aclaro que en el codigo estoy probando solo con el JTDecimal, despues de resuelto veo que devolver en cada caso.

class MyEditor extends DefaultCellEditor implements CellEditor, TableCellEditor {

        private ArrayList<DatoDinamico> datosDina;
        private DatoDinamico dina;
        private JTDecimal editor;
        private JTDecimal renderer;

        public MyEditor(ArrayList<DatoDinamico> datosDina) {
            super(new JTDecimal());
            this.datosDina = datosDina;
        }

        @Override
        public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
super.getTableCellEditorComponent(table, value, isSelected,  row, column);

            editor = (JTDecimal) super.getTableCellEditorComponent(table, value, isSelected,
                    row, column);
            editor.setMaxCharacters(14);
            editor.setMaxDecim(3);
            String strFormat = "#,##0." + StrUtils.dupeString("0", 3);
            editor.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.NumberFormatter(new java.text.DecimalFormat(strFormat))));

            if (isSelected) {
                editor.setForeground(table.getSelectionForeground());
                editor.setBackground(table.getSelectionBackground());
            } else {
                editor.setForeground(table.getForeground());
                editor.setBackground(table.getBackground());
            }

            dina = getDatoDina(row);

            return editor;
        }

        private DatoDinamico getDatoDina(int row) {
            for (int i = 0; i < datosDina.size(); i++) {
                if (i == row) {
                    return datosDina.get(i);
                }
            }
            return null;
        }

       
    }


#3
Java / JDateChooser y configuracion regional de idioma
29 Septiembre 2015, 22:19 PM
Hola a todos, les voy a hacer una consulta de curioso nomas.

Tengo una aplicación sencilla desarrollada por mi en swing que utiliza un componente JDateChooser para seleccionar una fecha.

El componente tiene una propiedad setDateFormatString que desde netBeans la configuro en dd/MM/yyyy.

Bueno, resulta que si yo tengo en la configuracion regional de windows, en la solapa formatos, en el combo Formato, seleccionado Español(Uruguay), me lo muestra de esa forma, pero si tengo seleccionado Español(España), me lo muestra en formato 29-sept-2015 por ejemplo.

Si esa propiedad la seteo por codigo si me toma bien lo que yo necesito sin importar la configuracion regional de windows.

Alguien sabe porque no le da corte a la propiedad si no la seteo por codigo luego del initComponents?? Y si lo saben hay alguna manera de solucionarlo que no sea por codigo??

Desde ya muchas gracias
#4
Bueno, la verdad mejor y mas claro que mi profesor, mil gracias me es super util!!!!!!
#5
banner.jsp


<%@page contentType="text/html" pageEncoding="UTF-8"%>
<STYLE type="text/css">
    .cuadroBanner{
        border-radius: 15px 15px 15px 15px;
        background: #8AC007;
        padding: 20px;
        width: 800px;
        height: 50px;
    }   
</STYLE>

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1 class="cuadroBanner">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            Mi primer ejercicio 12-09-2015</h1>
    </body>
</html>


menu.jsp


<%@page contentType="text/html" pageEncoding="UTF-8"%>
<style>
    nav{
        border-radius: 15px 15px 15px 15px;
        background: #8AC007;
        padding: 20px;
        width: 130px;
        height: 100px;
    }
    nav ul{
        list-style:none;
        margin:0 10px 0 10px;
        padding:0;
    }
    nav ul li{
        font-family:Arial, Helvetica, sans-serif;
        font-size:16px;
        color:black;
    }
    nav ul li:hover{
        font-weight: bold;
    }
    nav ul li a{
        color:black;
        text-decoration:none;
    }
</style>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <nav>
            <ul>
                <li><a href="index.jsp">Inicio</a></li>
                <li><a href="presentacion.jsp">Mis datos</a></li>
                <li><a href="calculadora.jsp">Calculadora</a></li>
                <li><a href="oneParam.jsp">Un parametro</a></li>
                <li><a href="multiParams.jsp">Multiparametros</a></li>
            </ul>
        </nav>
    </body>
</html>


index.jsp (esta es la que me interesa se vea debajo de banner, pero a la derecha del menu)


<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ include file="banner.jsp" %>
<%@ include file="menu.jsp" %>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>Primer pagina jsp con datos para probar lo aprendido<br>
                esperemos se vea bien en el navegador</h1>
    </body>
</html>
#6
Hola ... primero que nada aclarar que comenzé un curso de programación web la semana pasada osea soy noob, y esta pregunta es bien tonta :P

El tema es que estoy haciendo mediante netbeans una aplicación bien sencilla donde tengo 5 paginas jsp.
1- Un titulo, banner o como quieran llamarle donde muestro un texto estatico
2- Un menu vertical al costado donde tengo 3 links (inicio/calculadora/datos)
3/4/5- Las paginas jsp inicio/calculadora/datos. Cada una de estas paginas incluyen las 2 primeras con la siguiente directva

<%@ include file="banner.jsp" %>
<%@ include file="menu.jsp" %>

Todo me funciona ok, pero lo que no logro hacer es que, por ejemplo al cargar la pagina index.jsp que tiene simplemente unos parrafos estaticos y texto enriquecido, se muestre a la derecha del menu vertical, siempre se muestra debajo del menu.

A quien pueda ayudar a este noob aprendiz, desde ya muchas gracias.

P.D.: Dudé si poner el post aqui o en programacion java, cualquier cosa que un admin lo mueva

#7
El codigo de dos de las cajas de texto es este:

private void txtDivisionIdFocusLost(java.awt.event.FocusEvent evt) {                                       
        if (evt.getOppositeComponent() != null) {
            String dsc = regarch("DEP", txtDivisionId.getText(), "DEP", "0001");
            if (dsc != null) {
                txtDivisionDsc.setText(dsc);
            } else {
                JOptionPane.showMessageDialog(null, "División inexistente", "Error", JOptionPane.ERROR_MESSAGE);
                txtDivisionId.setText("");
                txtDivisionDsc.setText("");
            }
        }
    }         
private void txtCecIdFocusLost(java.awt.event.FocusEvent evt) {                                   
        if (evt.getOppositeComponent() != null) {
            String dsc = regarch("CEC", txtCecId.getText(), "CEC", "0001");
            if (dsc != null) {
                txtCecDsc.setText(dsc);
            } else {
                JOptionPane.showMessageDialog(null, "Centro de costos inexistente", "Error", JOptionPane.ERROR_MESSAGE);
                txtCecId.setText("");
                txtCecDsc.setText("");
            }
        }
    }                     


Cuando pierde el foco la caja de texto de id de division y se para en la de id de cec, se ejecuta primero el mensaje de centro de costos inexistente, y al aceptar se ejecuta inmediatamente el de división inexistente.

Gracias
#8
Sobre el problema 2 encontre la forma ... en el lost focus ejecuto el codigo solo si el oposite component es distinto de null ... sigo sin poder resolver lo primero!!!!
#9
Hola a todos ... molesto nuevamente por el siguiente problema.
Tengo un JFrame con 4 textfield que representan 4 entidades (entre otros componentes). En dichas cajas de texto se ingresan las clave de cada entidad que verifican existencia contra sus respectivas tablas (no importa si es en BD o memoria o lo que sea). El tema es que en la perdida de foco de cada cajita yo hago la verificacion de existencia de lo ingresado y si no existe envio un JOptionPane avisando que el dato no existe, pero tengo dos problemas con el comportamiento de la perdida de foco que no he podido resolver:

1) Cuando cambio el foco mediante TAB y el dato no es valido, es como que antes de abrir el JOptionPane del error le da el foco al siguiente textfield entonces al querer mostrar el mensaje primero ejecuta el focus lost del que gano el foco (que como esta en blando tambien envia mensaje de error), al cerrar este mensaje ahi nuevamente me muestra otro mensaje de error ahora si con el que efectivamente perdio el foco en primera instancia.

2) Lo otro es al cerrar el formulario ... me pasa lo mismo, se ejecuta la perdida de foco del textfield donde esta el cursor entonces antes de cerrar el formulario me muestra el mensaje de error si no tiene un dato valido.

Espero no haber sido demasiado entreverado en la descripción del problema, desde ya muchas gracias al que pueda ayudarme a evitar esto que me pasa.

P.D.: Quise probar con un imput verifaier, pero chequea cada entrada desde e teclado por lo que no me deja escirbir nada
#10
Java / Re: Ayuda JTable con 2 cabezales
25 Marzo 2015, 02:47 AM
Bueno ya estudie bastante el ejemplo que me pasaste Gus y la verdad que me resulta medio engorroso, pero se asemeja mucho a lo que necesito, asi que vuelvo a agradecer y marco el tema como solucionado.