0

データと jCombobox を含むアイテムを含むリストを作成したいと思います。私はこの listCellRenderer を使用します:

public class DeliveryListCellRenderer extends JPanel implements ListCellRenderer{

     JLabel[] lbl = new JLabel[2];  
     JComboBox combo;

  public DeliveryListCellRenderer()  
  {  
    setLayout(new GridLayout(0,2,15,0));  
    lbl[0] = new JLabel("",JLabel.RIGHT);  
    add(lbl[0]);  
    lbl[1] = new JLabel("",JLabel.LEFT);  
    add(lbl[1]);
    String[] timeZones = {"timeZone 1", "timeZone 2", "timeZone 3", "timeZone 4"};

    combo = new JComboBox(timeZones); 
    combo.setSelectedIndex(1);

    add(combo);
  }  
  public Component getListCellRendererComponent(JList list,Object value,  
                      int index,boolean isSelected,boolean cellHasFocus)  
  {  
    Delivery delivery = (Delivery)value;  
    lbl[0].setText("X : "+delivery.getNode().getX());  
    lbl[1].setText("Y : "+delivery.getNode().getY());
    if(isSelected) setBackground(Color.CYAN);  
    else setBackground(Color.WHITE);  
    return this;  
  }  
}

アプリケーションを実行すると、すべて正常に表示されますが、コンボボックスをクリックしても何も起こりません。

誰かアイデアはありますか?前もって感謝します。

4

2 に答える 2

3

アプリケーションを実行すると、すべて正常に表示されますが、コンボボックスをクリックしても何も起こりません。

于 2012-11-13T08:56:43.520 に答える
0

オブジェクトを使用して ComboBox に表示するコンテンツをマップする必要があります。

私は次のようにアドバイスします:(Tはあなたのオブジェクトのタイプです)。

    public class CustomComboBoxRenderer extends JLabel implements ListCellRenderer<T> {

    @Override
    public Component getListCellRendererComponent(JList<? extends T> list, T value, int index, boolean isSelected, boolean cellHasFocus) {

    if (isSelected) {
        setBackground(list.getSelectionBackground());
        setForeground(list.getSelectionForeground());
    }
    else {
        setBackground(list.getBackground());
        setForeground(list.getForeground());
    }
    if (index == -1) {
        setOpaque(false);
        setForeground(list.getForeground());
    }
    else {
        setOpaque(true);
    }
    setFont(list.getFont());

    if (value != null) {
        setText(value.getName());
    }

    return this;
    }
}

コンボボックスの作成:

    JComboBox<T> comboBox = new JComboBox<T>();
    comboBox.setRenderer(new CustomComboBoxRenderer ());
    add(comboBox);

お役に立てれば。

于 2012-11-13T12:26:02.647 に答える