Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[Java] JDialog method lijst laten returnen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik zit met een heel stom probleem dat ik niet opgelost krijg. Waarschijnlijk zal de oplossing vrij triviaal zijn, maar ik vind er echt geen.

De situatie:
Ik heb een JDialog box met daarin een JList met een lijst applicaties. Deze box wordt vanop verschillende punten aangeroepen (een applicatie editten, een aantal applicaties toevoegen aan een lijst, etc.). Wat de box dus moet doen is als er op ok wordt gedrukt een lijst met applicaties teruggeven aan de oproepende methode. Als er op Cancel wordt gedrukt, of als het window gesloten wordt, moet er een lege lijst terug gegeven worden. Ik maak deze box elke keer opnieuw aan (dat moet in principe niet, maar is op het moment het gemakkelijkste, ivm dynamisch laden van die applicaties moet die inhoud toch elke keer volledig veranderen).

Het probleem:
Dat lukt me niet, of toch niet ordelijk. Want, ik moet de methode die die lijst moet terug geven laten wachten tot er op een knop gedrukt is. Aangezien het Java 1.4.2 is heb ik niet meteen barriers en toestanden ter beschikking, waar ik het normaal mee zou doen. Wat ik zou kunnen doen is loopen tot er een boolean geset wordt dat er op een knop gedrukt is, maar dat is zo lelijk, niet?

Wat ik dus wil doen:
Java:
1
2
ApplicationChooser chooser = new ApplicationChooser(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
ArrayList appList = chooser.getSelectedApps();


Hoe doe ik het nu?
Nu moet je in de constructor van de box een ActionListener meegeven, en die dus zelf implementeren. Ik vond dat al geen mooie oplossing, maar ok. Mijn controler implementeert nu dus de ActionListener. Nu, ik wou net dubbel click events toevoegen, wat hiermee dus niet lukt.

Wat heb ik gedaan om het te proberen op te lossen?
- Java concurrency in practice zitten doorlezen, maar de methodes daarin om zoiets op te lossen hebben Java 5 nodig.
- Op het internet voorbeeldjes proberen te vinden, maar absoluut niets gevonden.

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 20-11 15:59

Gerco

Professional Newbie

Je moet de JDialog modal tonen. Dan zal de setVisible() method blocken tot de dialog weer dicht is. Dan kun je dus zoiets doen:

Java:
1
2
3
4
public List getSelectedApps() {
  setVisible(true);
  return makeNiceList(appList.getSelectedRows());
}


Zie ook How to make Dialogs.

[ Voor 17% gewijzigd door Gerco op 10-02-2008 18:04 ]

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Verwijderd

Topicstarter
Aaaaah, ok, kei hard merci! Ik was tegen dat setVisible ding aangelopen (gaf problemen in mijn code dat hij daarop blockte), maar niet beseft dat dat de oplossing was... Note to self: na 3u snacht programmeren is GEEN goed idee!
Btw: De tutorial over dialogs maken was ik al tegen gekomen, maar daar had ik geen oplossing voor dit probleem in gevonden.

[ Voor 21% gewijzigd door Verwijderd op 10-02-2008 18:31 ]