Ver Mensaje Individual
  #11 (permalink)  
Antiguo 29/04/2019, 22:06
Avatar de detective_jd
detective_jd
 
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años
Puntos: 6
Respuesta: Personalizando JList

Hola Calgary Corpus, verás en CeldaRegistro no lo tiene, pero puedo ponerle estás líneas de relleno (las comenté y no cambia en nada estando o no):

Código Java:
Ver original
  1. setEnabled(list.isEnabled());
  2. setFont(list.getFont());

Cita:
Creo que tu codigo funcionaria igual de bien o mal si eliminas el "implements ListCellRenderer" y remueves la funcion getListCellRendererComponent, pues no tiene sentido haberla implementado si no la usas nunca.
El problema está en este código, que está en el código:

Código Java:
Ver original
  1. private void cargarHistoriaClinica(Paciente paciente){
  2.         pnlshowhistoriaclinica.removeAll();
  3.         pnlshowhistoriaclinica.setLayout(new BorderLayout());
  4.         HeaderRegistro hreg = new HeaderRegistro();                
  5.         lthistoriaclinica.setModel(new ModeloRegistro(paciente));
  6.         [B]lthistoriaclinica.setCellRenderer(new CeldaRegistro(hreg));[/B]
  7.         sphistoriaclinica = new JScrollPane(lthistoriaclinica);
  8.         pnlshowhistoriaclinica.add(hreg, BorderLayout.PAGE_START);
  9.         pnlshowhistoriaclinica.add(sphistoriaclinica);
  10.         pnlshowhistoriaclinica.updateUI();
  11.     }

Sucede que para usar el setCellRenderer en los jlist pero el parámetro debe ser si o si de tipo ListCellRenderer, además puse el listado que no funciona porque el código tiene varios jlist con modelos, cabeceras y celdas que funcionan.

Pero tengo problemas para adaptar el largo, mi problema está en el cálculo pongo el código:

Código Java:
Ver original
  1. protected void customRendererRight(JTextArea ta,int i,int right) {
  2.         ta.setOpaque(true);
  3.         ta.setFont(new Font("DejaVu Sans",Font.BOLD, 12));
  4.         ta.setComponentOrientation(
  5.             ComponentOrientation.LEFT_TO_RIGHT);
  6.         ta.setForeground(Color.BLACK);
  7.         header.getHeaders()[i].setPreferredSize(new Dimension(getRight(i,right),
  8.             header.getHeaders()[i].getPreferredSize().height));
  9.         ta.setPreferredSize(new Dimension(getRight(i,right),
  10.             getBottom(header.getHeaders()[i])));
  11.         ta.setBorder(BorderFactory.createEmptyBorder(
  12.             0, 20, 0, 20));
  13.     }
  14.     private int getRight(int i, int typeRight){
  15.         System.out.println("del string: "+ (typeRight + 40));
  16.         System.out.println("de la cabecera: "+ (header.getHeaders()[i].getPreferredSize().width));
  17.         int right = typeRight;
  18.         int nowRight = header.getHeaders()[i].getPreferredSize().width - 40;
  19.         if((right + 40) > nowRight){
  20.             int dif = right - nowRight;
  21.             right = header.getHeaders()[i].getPreferredSize().width + dif + 20;
  22.         } else {
  23.             right = header.getHeaders()[i].getPreferredSize().width;
  24.         }
  25.         return right;
  26.     }
  27.     private int getRightTratat(){
  28.         int length = 0;
  29.         for(Paciente p : FacadeSystem.getInstance().manejadorDePacientes().findAll(null)){
  30.             for(Registro r : p.getRegistros().getChildren()){
  31.                 String[] tratat = r.getTratamientos().split("\n");
  32.                 for(String s : tratat){
  33.                     if(s.length() > length){
  34.                         length = s.length();
  35.                     }
  36.                 }
  37.             }
  38.         }
  39.         return length;
  40.     }
  41.     private int getRightDescrip(){
  42.         int length = 0;
  43.         for(Paciente p : FacadeSystem.getInstance().manejadorDePacientes().findAll(null)){
  44.             for(Registro r : p.getRegistros().getChildren()){
  45.                 String[] descrip = r.getDescripcion().split("\n");
  46.                 for(String s : descrip){
  47.                     if(s.length() > length){
  48.                         length = s.length();
  49.                     }
  50.                 }
  51.             }
  52.         }
  53.         return length;
  54.     }

El getRight(int i, int typeRight) en consola me aparece esto:

Cita:
del string: 74
de la cabecera: 322
del string: 75
de la cabecera: 327
del string es el del texto y la cabecera es el largo de la misma para la columna pero la forma de obtenerlo ya es mala porque 40 es la separación de la parte izquierda y derecha de las columnas. ¿Que se les ocurre?

Espero sus respuestas y saludos.
__________________
Si te interesa, visita mi perfil de Linkedin. Gracias