15. februar 2004 - 12:33Der er
8 kommentarer og 1 løsning
getSelectedItem - add SelectedItem
Hvordan griber jeg følgende an;
Jeg har et tekstfelt (Jtextfield1) samt en JComboBox og til sidst en knap (Jbutton11)Nu ville jeg gerne at hvis man vælger et punkt i min ComboBox så bliver det vist i mit tekstfelt, hvis derimod jeg skriver en titel i mit tekstfelt der ikke findes i min combobox i forvejen skal det tilføjes listen.
Tjaaaa - jeg vil mene at det afhænger af hvor mange komponenter der i forvejen bliver proppet ind i den gui, for brugeren skal på en eller anden måde vide at vedkommende kan tilføje elementer til listen ved at gøre et eller andet i comboboxen (tryk på Enter etc.)
Så er der mange komponenter ville jeg bruge editable combobox.
Er der få komponenter, vile jeg gøre som vi har gjort her, da det visuelt, stort set forklarer sig selv overfor brugeren
Tak. Det vil jeg være meget taknemlig for. Jeg bestemte mig for at bruge en editable combobox og fik det også til at virke, det er jo sådan at når man løser et problem så melder der sig nye spørgsmål. F.eks
Hvis jeg laver en JAR fil, kan jeg da gemme ændringer i programmet således at de bliver der når computeren slukkes uden at jeg skal rundt om en database? Kan jeg med en If - forskellig fra - sætning forhindre at allerede eksisterende poster bliver tilføjet min liste? Kan jeg lave en metode så jeg kan slette poster?
Ja det er mange spørgsmål og meget arbejde for at få en combobox til at virke 8>)
Hvis du har fået historikken til at virke springer jeg model implementeringen over.
Hvis du vil gemme historikken når computeren slukkes og du ikke vil gemme den i en database, kan du gemme den i en fil.
Her er lidt kode.
public class HistoryComboBox extends JComboBox {
public HistoryComboBox() { super(); setEditable(true); }
public void add(String item) { // I stedet for at bruge en if sætning for at finde ud af om item allerede // findes kan du bare fjerne den og sætte den ind igen. På den måde vil du // også altid have den sidst indtastede øverst. removeItem(item); insertItemAt(item, 0); setSelectedItem(item); }
public void remove(String item) { removeItem(item); // Hvis du ikke vil have valgt noget item efter at du har slettet et item // skal du fjerne setSelectedItem. setSelectedItem(getItemAt(0)); }
public void loadHistory(String fileName) { try { File f = new File(fileName); if (!f.exists)) return; FileInputStream fs = new FileInputStream(f); ObjectInput stream = new ObjectInputStream(fs); Object o = stream.readObject(); if (o instanceof ComboBoxModel) setModel((ComboBoxModel)o); stream.close(); fs.close(); } catch (Exception e) { e.printStackTrace(); // Log eller håndter fejlen yderligere her. } }
public saveHistory(String fileName) { try { FileOutputStream fs = new FileOutputStream(fileName); ObjectOutput stream = new ObjectOutputStream(fs); stream.writeObject(getModel()); stream.flush(); stream.close(); fs.close(); } catch (Exception e) { e.printStackTrace(); // Log eller håndter fejlen yderligere her. } }
Håber at det kunne hjælpe dig lidt videre på vejen mod din perfekte ComboBox :)
Tak for hjælpen, det ser meget interessant ud jeg glæder mig til at prøve det Du fortjener lidt point, se i listen så laver jeg lige et spørgsmål til dig! 8o)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.