28. september 2006 - 10:56Der er
6 kommentarer og 2 løsninger
diverse java spørgsmål
Hej
Har lidt spørgsmål:
1. En JComboBox, kan man ikke gøre som i HTML, hvor man viser noget i combobox'en til brugeren f.eks. "Hus", og bruger værdien "1" i koden?
2. Jeg har en Iterator med noget data i. Iteratoren indholder nogle typer f.eks. dør, dør, vindue, dør, mursten, vindue, tagsten. Hvordan laver jeg nemmest en funktion der giver mig en liste med de forskellige typer altså: dør, vindue,mursten, tagsten?
3. Nogle der har et eksempel på hvordan man kobler et Swing textarea (JTextArea) sammen med en scroll bar (JScrollBar) ?
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
1) I Java bruger du objekter. Men du kan også bruge indeks: DitObjekt objekt = (DitObjekt)combo.getSelectedItem(); int index = combo.getSelectedIndex();
2) public Collection convert (Iterator iter) { ArrayList list = new ArrayList (); while (iter.hasNext()) list.add (iter.next()); }
3)
Du laver en JScrollPane og putter dit textarea ind i den. Og i stedet for at tilføje dit textarea til noget, så tilføjer du din scrollpane:
JScrollPane scroller = new JScrollPane (textarea); panel.add (scroller, BorderLayout.CENTER);
1. Hvis du ikke vil koncentrere dig om på hvilken plads dine objekter er placeret i din combobox's arraylist, så ville jeg foretrække at have den prædefinerede værdi i objektet.
Eks: public class Type { private int vaerdi; private string type;
public Type(int vaerdi, string type ) { this.vaerdi = vaerdi; this.type = type; } get.... set....
}
Du kan også bruge JCombobox.insertItemAt(Object anObject, int index). Hvorefter du kan benytte mikkelbm's 1. Derudover kan du benytte din toString i objektet til, at specificere hvad der skal stå i JCombobox.
2. Er lidt i tvivl om hvad du vil have. Hvis det blot er en liste over alle typer så er mikkelbm's 2 svaret. Hvis du vil have dem hver for sig må du fortælle lidt mere om din opbygning.
Mindre rettelser / Du kan også returnere Collection/List ect. Personlig foretrækker jeg dog, at returnere det samme tilbage som typen og dermed ikke interfaces typen implementere :)
public ArrayList convert(Iterator iter) { ArrayList list = new ArrayList (); while (iter.hasNext()) list.add (iter.next()); return list; }
Ved 1'eren påpeger jeg, at det er en god ide, at rækkefølgen er konstant, såfremt brugeren vil benytte din metode. Derudover skriver jeg, hvordan han kan specificere rækkefølgen i JCombobox's arraylist, så objekterne ikke kommer til, at ligge tilfældigt, såfremt der sker ænderinger(fjernes/tilføjes objekter). return list; <- i 2. Derudover er jeg personlig i tvivl om, hvad brugeren ønsker i 2eren. For mig at se kan 2eren tolkes på flere måder. 3. Er der svaret på. Ps. Jeg lægger altid et svar så kan han/hun tage stilling til om han/hun fandt mine informationer nyttige eller ej.
Hvis du nærlæser min 1'er igen, så vil du se at jeg foreslår objekter, men at muligheden for at hente på index eksisterer.
Og i 2'eren vil jeg til hver en tid foretrække at returnere superklasse eller interface - rent designmæssigt mener jeg at dette er det pæneste. Alternativt vil jeg returnere et array af den ønskede type objekter og ikke en collection.
"Ps. Jeg lægger altid et svar så kan han/hun tage stilling til om han/hun fandt mine informationer nyttige eller ej."
Det er også helt iorden, hvis det svar så afviger fra det der allerede er svaret på :)
I Java bruger du objekter <- Det har da intet at gøre med det jeg skriver. Jeg skriver at han skal lægge værdien som en instansvariabel i objektet. Efter min mening afviger det nok til, at jeg har lov til at nævne det. Anyway - nok diskussion vil ikke kommentere mere på det fra nu af.
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.