elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Tutorial básico de Quickjs


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Problemas en JTable con CellEditor
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problemas en JTable con CellEditor  (Leído 1,697 veces)
alfrosende

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Problemas en JTable con CellEditor
« en: 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.

Código:
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;
        }

       
    }



« Última modificación: 4 Agosto 2016, 17:50 pm por alfrosende » En línea

nelmaster_vc

Desconectado Desconectado

Mensajes: 9



Ver Perfil
Re: Problemas en JTable con CellEditor
« Respuesta #1 en: 5 Agosto 2016, 01:45 am »

hola amigo solo te puedo decir que pases por este sitio

http://dis.um.es/~bmoros/Tutorial/parte14/cap14-13.html

aclare mis dudas ahi


Espero que sea de ayuda


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
help jtable
Java
visualfree 3 3,676 Último mensaje 1 Mayo 2009, 05:38 am
por Amerikano|Cls
Uso de jTable y jComboBox
Java
garçon 3 9,975 Último mensaje 24 Junio 2009, 22:47 pm
por garçon
jTable y jPopupMenu problemas en implementacion...
Java
the_katze 1 5,713 Último mensaje 18 Febrero 2010, 16:40 pm
por the_katze
problemas para sacar datos de un jtable(SOLUCIONADO)
Java
basickdagger 7 25,917 Último mensaje 18 Marzo 2011, 03:44 am
por basickdagger
Problemas con un Jtable en Java con conexion a mysql.
Java
Crytykal 4 2,393 Último mensaje 23 Mayo 2014, 14:01 pm
por puntoBat
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines