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
二维码