Foro sobre Java SE > Alineacion en Jtable
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
}
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
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.