2017-07-20 2 views
1

Eigentlich möchte ich Bild und Text beide im Kombinationsfeld hinzufügen. Ich benutze JLabel dafür, aber es funktioniert nicht, also wie kann ich das erreichen.Wie Bild und Text beide in Kombinationsfeld in Java hinzufügen können

Hier ist mein Code:

package swing; 

import java.awt.Color; 
import java.awt.Container; 
import java.awt.FlowLayout; 
import java.util.Vector; 

import javax.swing.ImageIcon; 
import javax.swing.JComboBox; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 

public class ComboBox { 
    public ComboBox() { 
    JFrame.setDefaultLookAndFeelDecorated(true); 
    JFrame frame = new JFrame("ComboBOx"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    Container con = frame.getContentPane(); 
    JLabel ar[] = new JLabel[5]; 
    ar[0] = new JLabel("ganesh",new ImageIcon("/images/g.jpg"),JLabel.HORIZONTAL); 
    ar[1] = new JLabel("ganes",new ImageIcon("/images/g.jpg"),JLabel.HORIZONTAL); 
    ar[2] = new JLabel("gane",new ImageIcon("/images/g.jpg"),JLabel.HORIZONTAL); 
    ar[3] = new JLabel("gan",new ImageIcon("/images/g.jpg"),JLabel.HORIZONTAL); 
    ar[4] = new JLabel("ga",new ImageIcon("/images/g.jpg"),JLabel.HORIZONTAL); 

    JComboBox<JLabel> box = new JComboBox<JLabel>(ar); 
    con.add(box); 
    con.setBackground(Color.white); 
    con.setLayout(new FlowLayout()); 
    frame.setVisible(true); 
    frame.pack(); 
    } 
    public static void main(String args[]) { 
    new ComboBox(); 
    } 
} 
+1

Werfen Sie einen Blick auf [Wie Combobox verwenden, einen benutzerdefinierten Renderer bereitstellt] (https: // docs.oracle.com/javase/tutorial/uiswing/components/combobox.html#renderer) mit einem nachweisbaren Beispiel – MadProgrammer

+0

Verwenden Sie keine Komponenten als Objekte in Modellen, ein Modell soll nur Daten übertragen, die Darstellung der Daten ist Update auf die Ansicht (die 'JComboBox' und CellRenderer in diesem Fall) – MadProgrammer

+0

Ich bin votin g, um diese Frage als Off-Topic zu schließen, da [How to use combo boxs] (https://docs.oracle.com/javase/tutorial/uiswing/components/combobox.html#renderer) ein vorgeführtes Beispiel liefert, das das Problem lösen wird primäres Problem – MadProgrammer

Antwort

1

@MadProgrammer Danke, finde ich meine Antwort

package swing; 

import java.awt.Color; 
import java.awt.Component; 
import java.awt.Container; 
import java.awt.FlowLayout; 
import java.util.Vector; 

import javax.swing.ImageIcon; 
import javax.swing.JComboBox; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JList; 
import javax.swing.ListCellRenderer; 

public class ComboBox { 
    ImageIcon imageIcon[] = { new ImageIcon("/images/g.jpg"), new ImageIcon("/images/g.jpg"), 
     new ImageIcon("/images/g.jpg"), new ImageIcon("/images/g.jpg"), new ImageIcon("/images/g.jpg") }; 
    Integer array[] = {1,2,3,4,5}; 
    String names[] = {"img1","img2","img3","img4","img5"}; 
    public ComboBox() { 
    JFrame.setDefaultLookAndFeelDecorated(true); 
    JFrame frame = new JFrame("ComboBOx"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    Container con = frame.getContentPane(); 

    ComboBoxRenderar rendrar = new ComboBoxRenderar(); 

    JComboBox box = new JComboBox(array); 

    box.setRenderer(rendrar); 
    con.add(box); 

    con.setLayout(new FlowLayout()); 

    frame.setVisible(true); 
    frame.pack(); 
    } 
    public class ComboBoxRenderar extends JLabel implements ListCellRenderer { 

    @Override 
    public Component getListCellRendererComponent(JList list, 
                Object value, 
                int index, 
                boolean isSelected, 
                boolean cellHasFocus) { 
     int offset = ((Integer)value).intValue() - 1 ; 

     ImageIcon icon = imageIcon[offset]; 
     String name = names[offset]; 

     setIcon(icon); 
     setText(name); 

     return this; 
    } 


    } 
    public static void main(String args[]) { 
    new ComboBox(); 
    } 
} 
Verwandte Themen