Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/05/2012, 22:51
marco64yes
 
Fecha de Ingreso: septiembre-2010
Mensajes: 350
Antigüedad: 13 años, 7 meses
Puntos: 9
Exclamación Error al mostrar Tooltip en cada celda de JcomboBox Java

Hola amigos, bueno pues les tengo un reto..

He estado haciendo una aplicación SWING en Java y me encontré con un problema que me esta dando dolres de cabeza el cual es ingresar un tooltip diferente dependiendo el campo que seleccionen del combobox... (esto debido a que el campo es pequeño y el texto interno es más largo, no puedo ampliar el combobox debido a limitaciones del template que no me permiten mover).

Bien, yo cuento con lo siguiente:

Código PHP:
package com.example
 
import javax.swing.*; 
import java.awt.*; 
import java.util.ArrayList
public class 
ComboboxToolTipRenderer extends DefaultListCellRenderer 
    
ArrayList tooltips
 
    @
Override 
    
public Component getListCellRendererComponent(JList list, Object value
                        
int indexboolean isSelectedboolean cellHasFocus) { 
 
        
JComponent comp = (JComponentsuper.getListCellRendererComponent(list, 
                
valueindexisSelectedcellHasFocus); 
 
        if (-
index && null != value && null != tooltips) { 
                    list.
setToolTipText(tooltips.get(index)); 
                } 
        return 
comp
    } 
 
    public 
void setTooltips(ArrayList tooltips) { 
        
this.tooltips tooltips
    } 

Dicha clase la mando a llamar con este código:

Código PHP:
package comboBox;
import java.awt.FlowLayout;

import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;

public class 
ComboBoxCreate extends JFrame {
public 
ComboBoxCreate() {
    
initialize();
}

private 
void initialize() {
    
setSize(300300);
    
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
setLayout(new FlowLayout(FlowLayout.LEFT));

    
JLabel label1 = new JLabel("Month  :");

    
String[] months = {"January""February""March""April""Mei""June",
            
"July""August""September""October""November""December"};

    
JComboBox comboBox = new JComboBox();
    
ComboboxToolTipRenderer renderer = new ComboboxToolTipRenderer();
    
comboBox.setRenderer(renderer);
    
//make a loop as needed
    
comboBox.addItem(months);
    
tooltips.add(tooltipString);
    
renderer.setTooltips(tooltips);
    
    
//JComboBox comboBox = new JComboBox(months);

    
getContentPane().add(label1);
    
getContentPane().add(comboBox);

}

public static 
void main(String[] args) {
    
SwingUtilities.invokeLater(new Runnable() {
        public 
void run() {
            new 
ComboBoxCreate().setVisible(true);
        }
    });
}

No entiendo porque no funciona
Les dejo el comboBox, funcionando pero sin el tooltip (aunque el de arriba tampoco lo tiene :S jeje)

Código PHP:
package comboBox;
import java.awt.FlowLayout;

import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;

public class 
ComboBoxCreate extends JFrame {
public 
ComboBoxCreate() {
    
initialize();
}

private 
void initialize() {
    
setSize(300300);
    
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
setLayout(new FlowLayout(FlowLayout.LEFT));

    
JLabel label1 = new JLabel("Month  :");

    
String[] months = {"January""February""March""April""Mei""June",
            
"July""August""September""October""November""December"};

    
/*JComboBox comboBox = new JComboBox();
    ComboboxToolTipRenderer renderer = new ComboboxToolTipRenderer();
    comboBox.setRenderer(renderer);
    //make a loop as needed
    comboBox.addItem(months);
    tooltips.add(tooltipString);
    renderer.setTooltips(tooltips);*/
    
    
JComboBox comboBox = new JComboBox(months);

    
getContentPane().add(label1);
    
getContentPane().add(comboBox);

}

public static 
void main(String[] args) {
    
SwingUtilities.invokeLater(new Runnable() {
        public 
void run() {
            new 
ComboBoxCreate().setVisible(true);
        }
    });
}

Espero me puedan ayudar con esto.
Muchas gracias!!!