Dividir una celda de una tabla en varias celdas (JTable)

View: New views
2 Messages — Rating Filter:   Alert me  

Dividir una celda de una tabla en varias celdas (JTable)

by Darkman shadows :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Buenas,
Nunca había tenido esta necesidad, generalmente con las celdas normales de un JTable esta bien para presentar datos; Pero en la actualidad estoy trabajando en un proyecto de la U para una escula y ocupan pasar el sist (hojas de cálculo) a una app. Aca esta el problema, hay ocasiones en las que una celda se ocupa dividir en varias, he investigando con TableCellRenderer, column model y Tablecelleditor pero todavía no le he encontrado solución.
Entre las opciones fue crear una tabla dentro de una celda, ya había echo esto con una imagen y funciona, creí que al ser objetos era igual pero no fue así, ya que lanza el "string del objeto" y no muestra la tabla (adjunto código).
Si alguien conoce una alternativa, o sabe implementar algunas de las mencionadas le agradezco si la comparte.
 
 
----------------------------
-Esta seria la tabla-
----------------------------
 
jTable1 = new javax.swing.JTable();
 
jTable1.setModel(new javax.swing.table.DefaultTableModel(
    createArray(),
    new String [] {
        "uno", "dos", "tres", "cuatro"
    }
)
{
    Class[] types = new Class [] {
        javax.swing.JTable.class, java.lang.String.class,
        java.lang.String.class, java.lang.String.class
    };
 
    public Class getColumnClass(int columnIndex) {
        return types [columnIndex];
    }
}
);
 
 
 
-------------
-Método-
-------------
 
private Object[][] createArray() {
        Object[][] elemArray = new Object[4][4];
        
        int cont = 0;
 
        JTable tablaTemp = new javax.swing.JTable(1,1);
 
        tablaTemp.setSize(10, 20);
tablaTemp.setModel(new javax.swing.table.DefaultTableModel(
    new Object [][] {
        {null, null}
    },
    new String [] {
        "Title 1", "Title 2"
    }
));
        for (int i=0; i<4; i++) {     
            elemArray[cont][0] = (JTable)tablaTemp;
            elemArray[cont][1] = (String)"darkman";
            elemArray[cont][2] = (String)"Luis";
            elemArray[cont][3] = (String)"Diego";
            
            ++cont;
        }//end for
       
        return elemArray;
    }//end method
 
 
 

javax.swing.JTable[,0,0,10x20,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=251658568,maximumSize=,minimumSize=,preferredSize=,autoCreateColumnsFromModel=true,autoResizeMode=AUTO_RESIZE_SUBSEQUENT_COLUMNS,cellSelectionEnabled=false,editingColumn=-1,editingRow=-1,gridColor=javax.swing.plaf.ColorUIResource[r=122,g=138,b=153],preferredViewportSize=java.awt.Dimension[width=450,height=400],rowHeight=16,rowMargin=1,rowSelectionAllowed=true,selectionBackground=javax.swing.plaf.ColorUIResource[r=184,g=207,b=229],selectionForeground=sun.swing.PrintColorUIResource[r=51,g=51,b=51],showHorizontalLines=true,showVerticalLines=true]
 
 
 
 
 
 

 
 

-------
DarkMan87
"La civilización no suprime la barbarie, la perfecciona." Voltaire.

 


      ____________________________________________________________________________________
¡Obtén la mejor experiencia en la web!
Descarga gratis el nuevo Internet Explorer 8.
http://downloads.yahoo.com/ieak8/?l=e1

Re: Dividir una celda de una tabla en varias celdas (JTable)

by David Castañeda-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Es posible que te funcione con lo de la tabla, vas bien, pero tienes que crear un render especial que devuelva un componente JTable, para esto busca como crear TableCellRenderer.





________________________________
From: Darkman shadows <darkman87ucr@...>
To: javaspain@...
Sent: Thursday, September 3, 2009 8:45:49 PM
Subject: [javaSpain] Dividir una celda de una tabla en varias celdas (JTable)

   
Buenas,
Nunca había tenido esta necesidad, generalmente con las celdas normales de un JTable esta bien para presentar datos; Pero en la actualidad estoy trabajando en un proyecto de la U para una escula y ocupan pasar el sist (hojas de cálculo) a una app. Aca esta el problema, hay ocasiones en las que una celda se ocupa dividir en varias, he investigando con TableCellRenderer, column model y Tablecelleditor pero todavía no le he encontrado solución.
Entre las opciones fue crear una tabla dentro de una celda, ya había echo esto con una imagen y funciona, creí que al ser objetos era igual pero no fue así, ya que lanza el "string del objeto" y no muestra la tabla (adjunto código).
Si alguien conoce una alternativa, o sabe implementar algunas de las mencionadas le agradezco si la comparte.
 
 
------------ --------- -------
-Esta seria la tabla-
------------ --------- -------
 
jTable1 = new javax.swing. JTable();
 
jTable1.setModel( new javax.swing. table.DefaultTab leModel(
    createArray( ),
    new String [] {
        "uno", "dos", "tres", "cuatro"
    }
)
{
    Class[] types = new Class [] {
        javax.swing. JTable.class, java.lang.String. class,
        java.lang.String. class, java.lang.String. class
    };
 
    public Class getColumnClass( int columnIndex) {
        return types [columnIndex] ;
    }
}
);
 
 
 
------------ -
-Método-
------------ -
 
private Object[][] createArray( ) {
        Object[][] elemArray = new Object[4][4] ;
       
        int cont = 0;
 
        JTable tablaTemp = new javax.swing. JTable(1, 1);
 
        tablaTemp.setSize( 10, 20);
tablaTemp.setModel( new javax.swing. table.DefaultTab leModel(
    new Object [][] {
        {null, null}
    },
    new String [] {
        "Title 1", "Title 2"
    }
));
        for (int i=0; i<4; i++) {      
            elemArray[cont] [0] = (JTable)tablaTemp;
            elemArray[cont] [1] = (String)"darkman" ;
            elemArray[cont] [2] = (String)"Luis" ;
            elemArray[cont] [3] = (String)"Diego" ;
             
            ++cont;
        }//end for
       
        return elemArray;
    }//end method
 
 
 
javax.swing. JTable[,0, 0,10x20,invalid, alignmentX= 0.0,alignmentY= 0.0,border= ,flags=251658568 ,maximumSize= ,minimumSize= ,preferredSize= ,autoCreateColum nsFromModel= true,autoResizeM ode=AUTO_ RESIZE_SUBSEQUEN T_COLUMNS, cellSelectionEna bled=false, editingColumn= -1,editingRow= -1,gridColor= javax.swing. plaf.ColorUIReso urce[r=122, g=138,b=153] ,preferredViewpo rtSize=java. awt.Dimension[ width=450, height=400] ,rowHeight= 16,rowMargin= 1,rowSelectionAl lowed=true, selectionBackgro und=javax. .swing.plaf. ColorUIResource[ r=184,g=207, b=229],selection Foreground= sun.swing. PrintColorUIReso urce[r=51, g=51,b=51] ,showHorizontalL ines=true, showVerticalLine s=true]
 
 
 
 
 
 
 
 

-------
DarkMan87
"La civilización no suprime la barbarie, la perfecciona. " Voltaire.
 

________________________________

¡Obtén la mejor experiencia en la web!
Descarga gratis el nuevo Internet Explorer 8
http://downloads. yahoo.com/ ieak8/?l= e1