JComboBox Methode setItemEnabeld(boolean)

Status
Nicht offen für weitere Antworten.

echnaton12

Mitglied
Hi Leute,

ich bräuchte eine Methode wie in der Überschrift
Code:
setItemEnabeld(boolean flag)
mit der ich quasie bestimmen kann, dass ein bestimmtes Item in der Combobox nicht selectierbar ist, aber noch angezeigt wird. Könnte mir jemand sagen wie ich das realisieren kann oder was ich dazu alles benötige?[/code]
 
kannst Du mal die Anforderung näher beschreiben, wofür man sowas braucht ??

Im allg. ist so eine Auswahlbox dazu da, dass man Dinge auswählen kann.
 
würd mal sagen z.B. in ner Trialversion... damit der User sieht, was ihm noch alles verwehrt ist, wenn er sich nicht registiert :wink:
 
Sky hat gesagt.:
kannst Du mal die Anforderung näher beschreiben, wofür man sowas braucht ??

Im allg. ist so eine Auswahlbox dazu da, dass man Dinge auswählen kann.

Nein hat mit trail auch nicht zu tun. Ich habe quasie ein Farbauswahl in meiner app. es ist eine GIS anendung. Dem user ist es möglich in einer Karte verschiedene Bezirk zu definieren mit den ausgewählten Farben. So weit so gut. es soll dem Benutzer aber nur möglich sein pro Karte die Farbe einmal zu verwenden. Da ich es schöner finde in der Combobox die schon benutzten Farben aus zu grauen und nicht selektierbar zu machen als immer wenn er kurz vor Schluß bein zeichnen eines Bezirkes immer mit einer Messagebox darauf hingewiesen wird das er eine andere Farbe wählen soll. Aber letzt endlich ist es ja egal weiß jemand wie das geht?
 
Sky hat gesagt.:
Du könntest die benutzen Farben aus der Liste entfernen
Danke für deine Hilfe habe das Problem zwischenzeitlich glöst und zwar so:
Code:
private void actionPreformedItemStateChaned(JComboBox combo)
  {
    int sel = combo.getSelectedIndex();
    if (!this.getColorChoice(sel).isEnable()) {
      if (sel + 1 > combo.getItemCount() - 1) {
        sel = -1;
      }
      combo.setSelectedIndex(sel + 1);
    }
  }

private class ListCellRender extends DefaultListCellRenderer
  {
    public Component getListCellRendererComponent(JList list, Object value,
                                                  int index, boolean isSelected,
                                                  boolean cellHasFocus)
    {
      if (index > -1) {
        if (!getColorChoice(index).isEnable()) {
          this.setText(value.toString());
          this.setForeground(Color.lightGray);
          return this;
        }
        else {
          this.setText(value.toString());
          this.setForeground(Color.black);
          return this;
        }
      }
      else {
        this.setText(value.toString());
        this.setForeground(Color.black);
        return this;
      }
    }
  }

  private class ComboListener implements ItemListener
  {
    public void itemStateChanged(ItemEvent event)
    {
      if (ItemEvent.SELECTED == event.getStateChange()) {
        JComboBox selectedChoice = (JComboBox) event.getSource();
        if (selectedChoice != null) {
          actionPreformedItemStateChaned(selectedChoice);
        }
      }
    }
  }
Wenn die Farbe verwendet wurde wird sie jetzt ausgegraut und wenn dann jemand die Farbe selektieren will wird das nächste Item in der Liste ausgewählt.
 
Warum stellst Du im Falle, dass die Selektion nicht möglich ist nicht die alte Selektion wieder her ?
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben