Mario: JCombobox - Text selektierbar, aber nicht editierbar

Hallo,

wie kann ich in Java eine JComboBox so gestalten, dass man den
angezeigten Text durchaus markieren (kopieren) kann, ohne dass
der Eintrag dann gleich editiert werden kann?
Mit cmb.setEnabled() und cmb.setEditable() erreicht man diesen
Zustand nicht.

Danke für Antworten
Mario

  1. Hallo Mario,

    So direkt geht das nicht. Der "richtige" Weg wäre wohl, einen eigenen ListCellRenderer zu schreiben, der das entsprechend dar stellt.
    Alternativ kann man aber auch etwas pfuschen und folgendes machen:
    myComboBox.setEditable(true);
    ((JTextComponent)myComboBox.getEditor().getEditorComponent()).setEditable(false);

    Das führt dazu, dass die Combobox meint, der Text wäre editierbar und sich entsprechend verhält. Die zum Editieren verwendete Textkomponente wird aber nicht editierbar gemacht.
    Das funktioniert allerdings nur, wenn auch tatsächlich eine JTextComponent verwendet wird. Das ist zwar sehr wahrscheinlich, aber das könnte, wenn man eine andere Oberfläche verwendet, auch mal anders sein.

    Grüße

    Daniel

    1. Hallo Daniel,

      danke für deine Antwort.

      So direkt geht das nicht. Der "richtige" Weg wäre wohl, einen
      eigenen ListCellRenderer zu schreiben, der das entsprechend dar
      stellt.

      Yep, habe es nun hierüber realisiert.

      Alternativ kann man aber auch etwas pfuschen und folgendes machen:
      myComboBox.setEditable(true);
      (JTextComponent)myComboBox.getEditor().getEditorComponent()).setEditable(false);

      Allerdings hat das den weniger schönen Nebeneffect, dass die
      Komponente ausgegraut wird..

      Grüße aus Berlin
      Mario