tablemodellistener - propiedades de jtable en java
¿Cómo configuro la columna JTable y el color de la fila? (2)
Aquí hay un pequeño ejemplo .
import java.awt.Color;
import java.awt.Component;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellRenderer;
public class JTableExample extends JFrame {
String data[][] = {{"John", "Sutherland", "Student"},
{"George", "Davies", "Student"},
{"Melissa", "Anderson", "Associate"},
{"Stergios", "Maglaras", "Developer"},
};
String fields[] = {"Name", "Surname", "Status"};
public static void main( String[] argv ) {
JTableExample myExample = new JTableExample( "JTable Example" );
}
/**
* @param title
*/
public JTableExample( String title ) {
super( title );
setSize( 150, 150 );
addWindowListener( new WindowAdapter() {
public void windowClosing( WindowEvent we ) {
dispose();
System.exit( 0 );
}
} );
init();
pack();
setVisible( true );
}
private void init() {
final CustomCellRenderer renderer = new CustomCellRenderer();
JTable jt = new JTable( data, fields ) {
@Override
public TableCellRenderer getCellRenderer(int row, int column) {
// TODO Auto-generated method stub
return renderer;
}
};
JScrollPane pane = new JScrollPane( jt );
getContentPane().add( pane );
}
/**
* @author suhas
*
*/
private class CustomCellRenderer extends DefaultTableCellRenderer {
/* (non-Javadoc)
* @see javax.swing.table.DefaultTableCellRenderer#getTableCellRendererComponent(javax.swing.JTable, java.lang.Object, boolean, boolean, int, int)
*/
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
Component rendererComp = super.getTableCellRendererComponent(table, value, isSelected, hasFocus,
row, column);
//Set foreground color
rendererComp.setForeground(Color.red);
//Set background color
rendererComp .setBackground(Color.blue);
return rendererComp ;
}
}
}
¿Cómo configuro la columna JTable
y el color de la fila?
Responder una pregunta vaga de un asker distraído requiere buena voluntad (y tiempo de inactividad).
Para la columna, puede establecer un representador de celda que extienda DefaultTableCellRenderer
(que extiende JLabel) en una columna, luego establezca el primer plano y el fondo del renderizador.
Para la fila, debe hacerlo en getTableCellRendererComponent
del renderizador celular.
Si necesita algo más que trivial (por ejemplo, un fondo de fila alternativo), debe usar un renderizador personalizado flexible. Hay innumerables componentes de mesas libres y comerciales que proporcionan coloración y todo lo que JTable debería tener, por ejemplo JIDE Grids (no libre pero súper potente).