Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Alineacion en Jtable

Hola, una duda que tengo y no he encontrado por internet aun.

Se puede cambiar la alineacion de los datos de una columna de un jtable?

Resulta que tengo en una tabla con valores tanto caracteres como numericos, y quiero que las columnas que tienen valores numericos, muestren sus valores alineados a la derecha.
Estos valores hacen referencia a precios, costos, etc.

Gracias.

junio 17, 2014 | Unregistered Commenterlatinjava

import java.awt.Component;
import java.util.Objects;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.table.DefaultTableCellRenderer;

public class NewJFrame extends javax.swing.JFrame {

public NewJFrame() {
initComponents();
jTable1.getColumn("Title 1").setCellRenderer(new CentradoTableCellRenderer());
jTable1.getColumn("Title 3").setCellRenderer(new DerechaTableCellRenderer());
}

/** This method is called from within the constructor to
initialize the form.
WARNING: Do NOT modify this code. The content of this method is
always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

jScrollPane1 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{"1", "fila1", "prueba1"},
{"2", "fila2", "prueba2"},
{"3", "fila3", "prueba3"},
{"4", "fila4", "pruena4"}
},
new String [] {
"Title 1", "Title 2", "Title 3"
}
));
jScrollPane1.setViewportView(jTable1);

getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER);

pack();
}// </editor-fold>

public static void main(String args[]) {
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new NewJFrame().setVisible(true);
}
});
}

private static class CentradoTableCellRenderer extends DefaultTableCellRenderer {

private static final long serialVersionUID = 2_651_439_627_994_968_311L;

@Override
public Component getTableCellRendererComponent(JTable table, Object obj, boolean isSelected, boolean hasFocus, int row, int column) {
super.getTableCellRendererComponent(table, obj, isSelected, hasFocus, row, column);
setText(Objects.toString(obj, ""));
setHorizontalAlignment(SwingConstants.CENTER);
return this;
}
}

private static class DerechaTableCellRenderer extends DefaultTableCellRenderer {

private static final long serialVersionUID = 2_651_439_627_994_968_311L;

@Override
public Component getTableCellRendererComponent(JTable table, Object obj, boolean isSelected, boolean hasFocus, int row, int column) {
super.getTableCellRendererComponent(table, obj, isSelected, hasFocus, row, column);
setText(Objects.toString(obj, ""));
setHorizontalAlignment(SwingConstants.RIGHT);
return this;
}
}

// Variables declaration - do not modify
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable jTable1;
// End of variables declaration
}

junio 18, 2014 | Registered Commenterchoces

Gracias choces, siempre ayudandome. te agradezco mucho tu ayuda.

Este es el codigo que hice para la alineacion de la columna:

DefaultTableCellRenderer derecha= new DefaultTableCellRenderer();
derecha.setHorizontalAlignment(JLabel.RIGHT);
JTablaPacienteCobro.getColumnModel().getColumn(3).setCellRenderer(derecha);//COLUMNA QUE QUIERO ALINEAR

Saludos

junio 19, 2014 | Unregistered Commenterlatinjava