2010-08-12 66 views

Respuesta

4

Consulte Concepts: Editors and Renderers, señalando "Number - dictada por una etiqueta alineada a la derecha". Simplemente haga que su TableModel devuelva la clase correcta. Como un ejemplo concreto, tenga en cuenta que Integer es un Number, al examinar la implementación de getColumnClass() en este example.

+0

¿Ha intentado siquiera esto? esto no funciona Incluso si lo hiciera, todavía no me gustaría este enfoque solo porque estás tratando de engañar a la clase para que crea que estás usando cierto tipo de objeto, lo que puede tener otras consecuencias que van más allá de alinear el texto. – searchengine27

+0

@ searchengine27: Gracias por comentar; He arreglado el enlace para señalar un ejemplo más representativo. No es un truco; es un [tipo de token] (http://stackoverflow.com/a/13673688/230513). – trashgod

2

Deberá obtener DefaultTableCellRenderer para celdas de tabla y llamar a setHorizontalAlignment (alineación).

ejemplo se puede encontrar en los enlaces:

http://www.techrepublic.com/article/how-to-justify-data-in-a-jtable-cell/5032692/

http://www.coderanch.com/t/337549/GUI/java/align-data-columns-JTable

+0

+1 Estoy un poco receloso de los artículos que escriben mal 'JTable', pero la barra lateral muestra un ejemplo completo. :-) – trashgod

+0

class RightTableCellRenderer extends DefaultTableCellRenderer { protected RightTableCellRenderer() { setHorizontalAlignment (JLabel.RIGHT); } agrego este código, después de eso ¿cómo puedo configurar el renderizador en mi columna jtable. } – Arivu2020

8

Prueba esto:

JTable tbl = new JTable(3,3) { 
    DefaultTableCellRenderer renderRight = new DefaultTableCellRenderer(); 

    { // initializer block 
     renderRight.setHorizontalAlignment(SwingConstants.RIGHT); 
    } 

    @Override 
    public TableCellRenderer getCellRenderer (int arg0, int arg1) { 
     return renderRight; 
    } 
}; 
+1

No había pensado en utilizar un bloque de inicializador en clases anónimas. Resuelve la falta de constructor, muy bien. – PeterVermont

+0

-1 para cortocircuitar todo el soporte para la configuración del renderizador de grano fino de la tabla (devolviendo uno-para-todo) También no hay necesidad de subclases, en su lugar use api de tabla/columna para instalar el renderizador personalizado según sea necesario – kleopatra

23
DefaultTableCellRenderer rightRenderer = new DefaultTableCellRenderer(); 
rightRenderer.setHorizontalAlignment(JLabel.RIGHT); 
table.getColumnModel().getColumn(4).setCellRenderer(rightRenderer); 
+6

+1 para una respuesta correcta, simplemente: a) * NO GRITAR * b) aprenda convenciones de nomenclatura java y cúmplalas (puede editar su respuesta y corregir ambas) – kleopatra

+0

La encontré funcionando pero solo parcialmente. 1) Si configura primero el renderizador de columna y luego el modelo, el modelo invalidará el renderizador ya establecido, lo hará 'nulo'. 2) Estoy usando Nimbus L y F, y el renderizador recientemente establecido cambia el color de fondo para que sea inconsistente con otras celdas. Puedo abrir una pregunta sobre este tema. – FaithReaper

Cuestiones relacionadas