Hola, gracias CalgaryCorpus, verás al resto de los jlist que tienen headers y celdas todos funcionan bien además de estar implementados de la misma manera que este, de hecho simplifique más la superclase:
Código Java:
Ver originalpackage app.vista.util.celdas;
import app.vista.util.columnas.HeaderPanel;
import java.awt.*;
import javax.swing.*;
protected HeaderPanel header;
public CeldaPerformer(HeaderPanel xheader) {
this.header = xheader;
setBackground
(Color.
WHITE); setOpaque(true);
setFont
(new Font("DejaVu Sans",
Font.
BOLD,
12)); prepareColumns();
}
ta.setOpaque(true);
ta.
setFont(new Font("DejaVu Sans",
Font.
BOLD,
12)); ta.
setForeground(Color.
BLACK); ta.setPreferredSize(xheader.getPreferredSize());
}
ta.setBackground(xc);
ta.
setForeground(Color.
BLACK); }
protected void prepareColumns(){
columns
= new JTextArea[header.
getHeaders().
length]; for(int i = 0; i < header.getHeaders().length; i++){
customRenderer(columns[i], header.getHeaders()[i]);
add(columns[i]);
}
}
@Override
int index, boolean isSelected, boolean cellHasFocus) {
displayColumns(value);
if (index % 2 == 0) {
colourColumn
(column,
Color.
LIGHT_GRAY); }
} else {
colourColumn
(column,
Color.
WHITE); }
}
if(isSelected){
colourColumn
(column,
Color.
PINK); }
}
return this;
}
public abstract void displayColumns
(Object value
); }
y la subclase:
Código Java:
Ver originalpackage app.vista.util.celdas;
import app.contr.clases.*;
import app.contr.util.Conversiones;
import app.contr.util.FacadeSystem;
import app.vista.util.columnas.*;
import java.awt.*;
import javax.swing.*;
public class CeldaRegistro extends CeldaPerformer {
public CeldaRegistro(HeaderPanel xheader) {
super(xheader);
}
@Override
ta.setOpaque(true);
ta.
setFont(new Font("DejaVu Sans",
Font.
BOLD,
12)); ta.setComponentOrientation(
ta.
setForeground(Color.
BLACK); int bottom = getBottom();
if(bottom == 0){
bottom = xheader.getPreferredSize().height;
}
xheader.getPreferredSize().width, bottom));
0, 20, bottom, 20));
}
private int getBottom(){
int maxlength = 1;
int maxBottom = 0;
for(Paciente p : FacadeSystem.getInstance().manejadorDePacientes().findAll(null)){
for(Registro r : p.getRegistros().getChildren()){
String[] descrip
= r.
getDescripcion().
split("\n"); if(descrip.length > maxlength){
maxlength = descrip.length;
}
String[] tratat
= r.
getTratamientos().
split("\n"); if(tratat.length > maxlength){
maxlength = tratat.length;
}
}
}
if(maxlength > 1){
for(int i = 0; i < maxlength; i++){
maxBottom += 25;
}
} else {
maxBottom = 25;
}
return maxBottom;
}
@Override
public void displayColumns
(Object value
) { Registro data = (Registro)value;
Consulta c = data.getConsulta();
columns[0].setText(Conversiones.CStr(data.getId()));
columns[1].setText(Conversiones.MostrarFechaYHora(c.getFecha()));
columns[2].setText(c.getMedico().getNombre() + " " + c.getMedico().getApellido());
columns[3].setText(c.getPaciente().getNombre() + " " + c.getPaciente().getApellido());
columns[4].setText(data.getDescripcion());
columns[5].setText(data.getTratamientos());
}
}
Cita: Si no tienes ningun objeto de tipo JList en tu codigo, o bien no le estas aplicando el renderer, entonces ya tienes la respuesta de porque esto no funciona.
El único es el parámetro de la función getListCellRendererComponent, probé con el setFont pero no hace nada.
Raro porque todos los demás funcionan menos este.
Espero sus respuestas y saludos.