Skip to Main Content

Java SE (Java Platform, Standard Edition)

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

How to aling the text in a JTable???

843807Aug 14 2010 — edited Aug 15 2010
I use this code to make a vertical header like in excel. The thing is that i want to aling the text in that column but i couldn´t. I try to set the render, but i loose the header render in the column. Anyone know how to aling the text in that column with out loosing the header effect????

i post a code that i use as model for my project.
package com.chuidiang.ejemplos;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.WindowConstants;
import javax.swing.table.DefaultTableModel;

/**
 * Ejemplo de cómo hacer una "cabecera" lateral en un JTable. Idea original de
 * Leunamal en
 * http://foro.chuidiang.com/java-j2se/tabla-de-referencias-cruzadas-en-java/
 * 
 * Básicamente consiste en hacer que la primera columna: - No sea editable. - No
 * sea seleccionable. - Tenga el mismo render que el JTableHeader superior.
 * 
 * @author chuidiang
 */
public class CabeceraLateral {
	/**
	 * Crea y visualiza una ventana con un JTable que tiene cabecera en la parte
	 * superior y en la columna izquierda
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		// Un modelo de datos que hace la primera columna (la de
		// la cabecera lateral) no editable.
		DefaultTableModel tm = new DefaultTableModel(10, 5) {
			@Override
			public boolean isCellEditable(int row, int column) {
				if (0 == column)
					return false;
				return super.isCellEditable(row, column);
			}
		};

		// Titulos para la cabecera superior. El primero es vacio,
		// puesto que corresponde
		tm.setColumnIdentifiers(new String[] { "", "A", "B", "C", "D" });

		// Valores para la primera columna, que es la cabecera lateral.
		for (int i = 0; i < 10; i++)
			tm.setValueAt(i + 1, i, 0);

		// JTable al que se le pasa el modelo recien creado y se
		// sobreescribe el metodo changeSelection para que no permita
		// seleccionar la primera columna.
		JTable t = new JTable(tm) {
			@Override
			public void changeSelection(int rowIndex, int columnIndex,
					boolean toggle, boolean extend) {
				if (columnIndex == 0)
					super.changeSelection(rowIndex, columnIndex + 1, toggle,
							extend);
				else
					super.changeSelection(rowIndex, columnIndex, toggle,
									extend);
			}
		};

		// Se pone a la primera columna el render del JTableHeader
		// superior.
		t.getColumnModel().getColumn(0).setCellRenderer(t.getTableHeader().getDefaultRenderer()); //here i set the render for the column. But when i try to aling the text, this column loose the effect.
		
		// Creación y visualización de la ventana completa.
		JFrame v = new JFrame("Cabecera lateral");
		JScrollPane sp = new JScrollPane(t);
		v.getContentPane().add(sp);
		v.pack();
		v.setVisible(true);
		v.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
	}
}
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Sep 12 2010
Added on Aug 14 2010
2 comments
209 views