Hola, gracias por responderme CalgaryCorpus y FuzzyLog, en base a lo que me dijeron hice los siguientes cambios:
Código Java:
Ver originalpackage app.vista.util.columnas;
import java.awt.FlowLayout;
import javax.swing.BorderFactory;
import javax.swing.JLabel;
import javax.swing.JPanel;
public abstract class HeaderPanel
extends JPanel { public HeaderPanel() {
prepareHeaders();
}
protected void customeHeader(int i,int lr){
temp.
setHorizontalTextPosition(JLabel.
LEFT); temp.
setVerticalTextPosition(JLabel.
BOTTOM); headers[i] = temp;
}
protected void addHeaders(){
add(l);
}
}
return headers;
}
abstract protected void prepareHeaders();
}
Código Java:
Ver originalpackage app.vista.util.columnas;
import javax.swing.JLabel;
public class HeaderRegistro extends HeaderPanel {
public HeaderRegistro() {
super();
customeHeader(0, 30);
customeHeader(1, 60);
customeHeader(2,70);
customeHeader(3,70);
customeHeader(4,120);
customeHeader(5,120);
addHeaders();
}
@Override
protected void prepareHeaders() {
};
}
}
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++){
customeColumnRenderer(columns[i], header.getHeaders()[i]);
}
add(ta);
}
}
@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); }
}
setEnabled(list.isEnabled());
setFont(list.getFont());
return this;
}
public abstract void displayColumns
(Object value
); }
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
protected void prepareColumns() {
columns
= new JTextArea[header.
getHeaders().
length]; for(int i = 0; i < header.getHeaders().length; i++){
}
for(int i = 0; i < columns.length; i++){
int bottom = getBottom();
if(bottom == 0){
bottom = header.getHeaders()[i].getPreferredSize().height;
}
columns[i].setOpaque(true);
columns
[i
].
setFont(new Font("DejaVu Sans",
Font.
BOLD,
12)); columns
[i
].
setForeground(Color.
BLACK); columns[i].setComponentOrientation(
header.getHeaders()[i].getPreferredSize().width, bottom));
0, 20, bottom, 20));
add(columns[i]);
}
}
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;
}
}
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());
}
}
Por cierto también uso otras Celdas y Headers, pero esos no importan en este momento, resulta que logré implementar bien que se adapten la parte de abajo según los saltos de líneas que puede tener la descripción y/o tratamiento de un registro, pero por alguna razón no me muestra el color de letra, y eso que está implementado.
Pongo el link para que lo ven mejor.
Mejorando personalización de JList - parte de abajo adaptada.
Espero sus respuestas y saludos.