hallo,
ich hatte grad die idee, das wenn ich ne ComboBox nutze, ich gern am Anfang ein DummyItem à la "Bitte wählen" oder sowas hätte, was aber selbst nich im auftauchenden PopUpMenu gewählt werden kann, sprich wenn man da ein Item wählt kann nie wieder dieses Dummy-Element erscheinen (Auswahl also gültig).
bisher hier meine sobene zusammen-gehackte Version mit eigenen ComboBoxModel:
von den redundanten code-teilen mal abgesehen ... war nur ein Test.
Ich habe nun das ganze so genutzt:
so ... funktioniert wunderbar .. ich seh die "..." am Anfang und kann diese auch nie auswählen (bleibt nur stehen wenn ich nix aus dem popup auswähle).
Ich habe das ganze vorher auf normalen Wege probiert mittels:
leider fruchtet dieser Versuch nicht, nun Frage ich mich warum ^^ .. ich nutze in meinem Hack doch auch diese Methode und da steht drin, wenn das Objekt nicht in der DatenListe ist, aber die ComboBox editierbar, dann wird trotzdem das neue Element ausgewählt .. passiert aber nicht. Und mit meinem Hack von oben kann ich auch das Editable false setzen im Nachhinein - und es klappt.
Weiss wer warum? Gibts eine Möglichkeit ohne das ich diese neue Klasse brauch? Ging zwar schnell und ist ja nicht gross, aber werde das Gefühl nicht los, dass es auch ohne diese geht ^^
Wichtig is eben nur, dass das Dummy-Item nicht im PopUp erscheint
nächtliche Grüße
ich hatte grad die idee, das wenn ich ne ComboBox nutze, ich gern am Anfang ein DummyItem à la "Bitte wählen" oder sowas hätte, was aber selbst nich im auftauchenden PopUpMenu gewählt werden kann, sprich wenn man da ein Item wählt kann nie wieder dieses Dummy-Element erscheinen (Auswahl also gültig).
bisher hier meine sobene zusammen-gehackte Version mit eigenen ComboBoxModel:
Code:
public class ComboBoxModelDummyItem extends DefaultComboBoxModel {
//initially selected item
private Object dummyItem;
public ComboBoxModelDummyItem(Object dummyItem) {
super();
this.dummyItem = dummyItem;
setSelectedItem(dummyItem);
}
public ComboBoxModelDummyItem(Object[] items, Object dummyItem) {
super(items);
this.dummyItem = dummyItem;
setSelectedItem(dummyItem);
}
public ComboBoxModelDummyItem(Vector<?> v, Object dummyItem) {
super(v);
this.dummyItem = dummyItem;
setSelectedItem(dummyItem);
}
}
von den redundanten code-teilen mal abgesehen ... war nur ein Test.
Ich habe nun das ganze so genutzt:
Code:
//attributes ist String-Array mit gültigen Auswahlmöglichkeiten
ComboBoxModelDummyItem cbm = new ComboBoxModelDummyItem(attributes,"...");
cb = new JComboBox(cbm);
cb.setEditable(false);

so ... funktioniert wunderbar .. ich seh die "..." am Anfang und kann diese auch nie auswählen (bleibt nur stehen wenn ich nix aus dem popup auswähle).
Ich habe das ganze vorher auf normalen Wege probiert mittels:
Code:
//attributes ist String-Array mit gültigen Auswahlmöglichkeiten
cb = new JComboBox(attributes);
cb.setSelectedItem(new String("..."));
cb.setEditable(false); //sowohl auskommentiert als auch mit dieser Anweisung probiert
leider fruchtet dieser Versuch nicht, nun Frage ich mich warum ^^ .. ich nutze in meinem Hack doch auch diese Methode und da steht drin, wenn das Objekt nicht in der DatenListe ist, aber die ComboBox editierbar, dann wird trotzdem das neue Element ausgewählt .. passiert aber nicht. Und mit meinem Hack von oben kann ich auch das Editable false setzen im Nachhinein - und es klappt.
Weiss wer warum? Gibts eine Möglichkeit ohne das ich diese neue Klasse brauch? Ging zwar schnell und ist ja nicht gross, aber werde das Gefühl nicht los, dass es auch ohne diese geht ^^
Wichtig is eben nur, dass das Dummy-Item nicht im PopUp erscheint
nächtliche Grüße