Java – insert jlabel into jcombobox
•
Java
http://prntscr.com/1gpdqe
Sorry, this is my first time to attend this forum
Can someone help me?
I've been trying to JCombo@R_91_2419 @The previous line produced image and text programs. After searching on the website, I couldn't find a solution to the problem
Jlabel above jlabel can work, but JCombo@R_91_2419 @Jlabel in cannot
Solution
Perhaps this example will solve the problem:
I used label icon on getlistcellrenderercomponent
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.HashMap;
import java.util.Map;
import javax.swing.DefaultListCellRenderer;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JCombo@R_91_2419@;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class ShowConboWithIcons extends JFrame {
private static final long serialVersionUID = 1L;
private static final ImageIcon INFO_ICON = new ImageIcon("info.png");
private static final ImageIcon NONE_ICON = new ImageIcon("none.png");
public final String NONE_STR = "None";
private final String INFO_STR = "Info";
private JCombo@R_91_2419@ combo@R_91_2419@;
private JPanel topPanel;
private String[] str_arr = null;
public ShowConboWithIcons(String[] str_arr) {
this.str_arr = str_arr;
}
public void createGUI(){
setMinimumSize(new Dimension(100,100));
setTitle("Demo");
setLocation(200,200);
topPanel = new JPanel();
getContentPane().add(topPanel,BorderLayout.CENTER);
Map<Object,Icon> icons = new HashMap<Object,Icon>();
icons.put(NONE_STR,NONE_ICON);
icons.put(INFO_STR,INFO_ICON);
combo@R_91_2419@ = new JCombo@R_91_2419@();
combo@R_91_2419@.setRenderer(new IconListRenderer(icons));
combo@R_91_2419@.addItem("None");
for(String val : str_arr){
combo@R_91_2419@.addItem(val);
}
topPanel.add(combo@R_91_2419@);
super.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
}
});
}
public static void main(String[] args) throws ClassNotFoundException,InstantiationException,illegalaccessexception,UnsupportedLookAndFeelException {
UIManager.setLookAndFeel( "com.sun.java.swing.plaf.windows.WindowsLookAndFeel" );
String[] str_arr = {"A","B","C","D","E"};
ShowConboWithIcons T = new ShowConboWithIcons(str_arr);
T.createGUI();
T.setVisible(true);
}
class IconListRenderer extends DefaultListCellRenderer{
private static final long serialVersionUID = 1L;
private Map<Object,Icon> icons = null;
public IconListRenderer(Map<Object,Icon> icons){
this.icons = icons;
}
@Override
public Component getListCellRendererComponent(JList list,Object value,int index,boolean isSelected,boolean cellHasFocus)
{
JLabel label = (JLabel) super.getListCellRendererComponent(list,value,index,isSelected,cellHasFocus);
// Get icon to use for the list item value
Icon icon = icons.get(value);
if(!value.toString().equals(NONE_STR)){
icon = icons.get(INFO_STR);
}
// Set icon to display for value
label.setIcon(icon);
return label;
}
}
}
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码
