Just nu i M3-nätverket
Jump to content

Visa tooltip i en combobox


stice

Recommended Posts

Hej,

 

jag har ett litet problem med en combobox. Jag hämtar in information att lägga i en combobox, mao inte hårdkodar in det i koden. Det är inga problem att visa texten men jag vill ha en tooltip på varje rad eftersom comboboxen inte får vara så bred som den bör vara...

 

Finns det något sätt att få en tooltip på detta sätt?

 

Hoppas det inte är för otydligt!

 

Tack på förhand

 

// stice

 

Link to comment
Share on other sites

Det går, men inte så enkelt som att bara sätta tooltip med en rad, tyvärr.

 

Du måste dels lägga till en actionlistener till jcomboboxen för att uppdatera det valda fältets tooltip, dels bygga en en egen itemcellrenderer för att ge alla grejer i listan tooltips när man väljer.

 

Nedan är ett exempel:

 

 

[log]

public class Ook extends JFrame implements ActionListener

{

public Ook()

{

super("ook");

setLocationRelativeTo(null);

setDefaultCloseOperation(EXIT_ON_CLOSE);

JComboBox theBox = new JComboBox(new String[]{"wooooooo hoooooooooooooooooooooooo", "japp","nepp"});

theBox.setToolTipText(theBox.getSelectedItem().toString());

theBox.setRenderer(new TooltipRenderer());

theBox.addActionListener(this);

getContentPane().add(theBox);

setSize(100, 50);

}

 

public static void main( String[] args )

{

new Ook().setVisible(true);

}

 

public void actionPerformed( ActionEvent e )

{

JComboBox theBox = (JComboBox) e.getSource();

theBox.setToolTipText(theBox.getSelectedItem().toString());

}

 

private class TooltipRenderer extends JLabel implements ListCellRenderer

{

 

public Component getListCellRendererComponent( JList list, Object value, int index, boolean isSelected,

boolean cellHasFocus )

{

setText(value.toString());

setBackground(cellHasFocus || isSelected?Color.lightGray:Color.white);

setToolTipText(value.toString());

return this;

}

 

public void paint(Graphics g)

{

g.setColor(this.getBackground());

g.fillRect(0,0,getWidth(), getHeight());

super.paint(g);

}

}

}

[/log]

 

Hoppas det hjälpte.

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...