Hola a todos, acá estoy en una situación algo asfixiante, estoy preparando gente para un examen
y una mini tesis en java, y dicha institución prohibe el uso de jtable promoviendo así el uso de jlist, no estoy teniendo problemas en cargar los datos pero sí en personalizarlos.
Logré ponerle cabeceras a los jlist pero sí una columna tiene 2 o más líneas no se adapta la parte de abajo de la comuna, y si el texto es largo no se adapta la parte de la derecha, además de que las cabeceras no deben tener el mismo tamaño de las columnas del jlist.
Intenté usar reflection pero no doy bien al clavo.
Pongo el código para que me digan dónde están los errores y que cambiar:
Código Java:
Ver originalpackage app.vista.util.celdas;
import app.vista.util.columnas.HeaderPanel;
import java.awt.Color;
import java.awt.ComponentOrientation;
import java.awt.FlowLayout;
import java.awt.Font;
import javax.swing.BorderFactory;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.ListCellRenderer;
protected HeaderPanel header;
public CeldaPerformer(HeaderPanel xheader) {
this.header = xheader;
setBackground
(Color.
WHITE); setOpaque(true);
setFont
(new Font("DejaVu Sans",
Font.
BOLD,
12)); }
ta.setOpaque(true);
ta.
setFont(new Font("DejaVu Sans",
Font.
BOLD,
12)); ta.
setForeground(Color.
GRAY); ta.setPreferredSize(xheader.getPreferredSize());
}
}
}
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 java.lang.reflect.Field;
import javax.swing.*;
public class CeldaRegistro extends CeldaPerformer {
public CeldaRegistro(HeaderPanel xheader) {
super(xheader);
try {
rendererColumn((HeaderRegistro)header);
customeColumnRenderer(lregistro, ((HeaderRegistro)header).getLregistro());
customeColumnRenderer(lfecha, ((HeaderRegistro)header).getLfecha());
customeColumnRenderer(lpaciente, ((HeaderRegistro)header).getLpaciente());
customeColumnRenderer(lmedico, ((HeaderRegistro)header).getLmedico());
customeColumnRenderer(ldescripcion, ((HeaderRegistro)header).getLdescripcion());
customeColumnRenderer(ltratamiento, ((HeaderRegistro)header).getLtratamiento());
this.add(lregistro);
this.add(lfecha);
this.add(lpaciente);
this.add(lmedico);
this.add(ldescripcion);
this.add(ltratamiento);
System.
out.
println(ex.
getMessage()); }
}
private void rendererColumn
(HeaderRegistro xheader
) throws Exception { for(Field f
: xheader.
getClass().
getDeclaredFields()){ f.setAccessible(true);
}
}
}
int maxbottom = 0;
for(Paciente p : FacadeSystem.getInstance().manejadorDePacientes().findAll(null)){
for(Registro r : p.getRegistros().getChildrens()){
for(Field f
: r.
getClass().
getDeclaredFields()){ f.setAccessible(true);
String[] aux
= str.
split("\n"); if(aux.length > 1){
maxbottom += 20;
}
}
}
}
}
}
return maxbottom;
}
for(Paciente p : FacadeSystem.getInstance().manejadorDePacientes().findAll(null)){
for(Registro r : p.getRegistros().getChildrens()){
for(Field f
: r.
getClass().
getDeclaredFields()){ f.setAccessible(true);
String[] aux
= str.
split("\n"); if(aux.length > 1){
if(s.length() > maxright){
maxright = s.length();
}
}
}
}
}
}
}
return maxright * 70;
}
@Override
ta.setBackground(xc);
ta.
setForeground(Color.
BLACK); }
}
@Override
public Component getListCellRendererComponent
(JList list,
Object value,
int index,
boolean isSelected,
boolean cellHasFocus
) { Registro data = (Registro)value;
lregistro.setText(Conversiones.CStr(data.getId()));
lfecha.setText(Conversiones.MostrarFechaYHora(data.getConsulta().getFecha()));
lmedico.setText(data.getConsulta().getMedico().getNombre() + " " + data.getConsulta().getMedico().getApellido());
lpaciente.setText(data.getConsulta().getPaciente().getNombre() + " " + data.getConsulta().getPaciente().getApellido());
ldescripcion.setText(data.getDescripcion());
ltratamiento.setText(data.getTratamientos());
if (index % 2 == 0) {
colourColumn
(lregistro,
Color.
LIGHT_GRAY); colourColumn
(lfecha,
Color.
LIGHT_GRAY); colourColumn
(lmedico,
Color.
LIGHT_GRAY); colourColumn
(lpaciente,
Color.
LIGHT_GRAY); colourColumn
(ldescripcion,
Color.
LIGHT_GRAY); colourColumn
(ltratamiento,
Color.
LIGHT_GRAY); } else {
colourColumn
(lregistro,
Color.
WHITE); colourColumn
(lfecha,
Color.
WHITE); colourColumn
(lmedico,
Color.
WHITE); colourColumn
(lpaciente,
Color.
WHITE); colourColumn
(ldescripcion,
Color.
WHITE); colourColumn
(ltratamiento,
Color.
WHITE); }
if(isSelected) {
colourColumn
(lregistro,
Color.
PINK); colourColumn
(lfecha,
Color.
PINK); colourColumn
(lmedico,
Color.
PINK); colourColumn
(lpaciente,
Color.
PINK); colourColumn
(ldescripcion,
Color.
PINK); colourColumn
(ltratamiento,
Color.
PINK); }
setEnabled(list.isEnabled());
setFont(list.getFont());
return this;
}
}