Vraag & Antwoord

Programmeren

Java: Swing / Frame - Dialog

9 antwoorden
  • Hallo, Ik zit met een probleempje. Ik zoek een manier om een waarde door te geven bij het sluiten van een frame of Dialog..(geen standard optionpane, tenzij ik zelf de componenten erop kan bepalen.) Mijn hoofdprogramma maakt in één van zijn methoden een 'form' aan die een textarea toont met 2 buttons eronder. Deze 'form' is een soort van controle scherm dat de gebruikers te zien krijgen. Ik zou nu moeten weten op welke button ze geklikt hebben. Maar ik moet dit weten in mijn hoofdprogramma die deze jFrame of jDialog class aanroept.. Ik vind hier maar geen voorbeelden van, tenzij de optionpanes. (Maar ik vind dan weer geen voorbeelden om ze te customizen hoe ik wil.) Iemand die hier hulp kan geven? Of pak ik het verkeerd aan.
  • door het voldoende doorgeven van variabelen moet je m bereikbaar kunnen maken. Van welk designpatterns maak je gebruik?
  • Voldoende doorgeven van variabelen? Hoe bedoel je? Dat begrijp ik niet. En designpattern eigenlijk ook niet :oops: Ik zal het uitleggen adhv ander voorbeeld, dat mssn logischer inéén zit: Stel ik zit in een Frame A met een inputveld die een primary key van een tabel verwacht. Naast dit inputveld staat een button die een popup frame/dialog B tevoorschijn brengt, waar gebruikers uit een lijst kunnen kiezen om de code op te zoeken. Nadat ze een code gekozen hebben, wil ik die waarde zetten in het inputveld van frame_A, en frame B sluiten.
  • het antwoord hangt een beetje af van hoe je de basis hebt gelegd. Maar na even zoeken op Google vond ik dat het toch gemakkelijk met een JoptionPane kan - wist ik ook niet, maar ik dacht 'laat ik s zoeken naar een algemene oplossing': http://java.sun.com/docs/books/tutorial/uiswing/components/dialog.html#input Hoop dat je hiermee verder komt.
  • Dat is het dus niet.. :) Ik heb die voorbeelden ook al gegoogled. Dit zijn voorbeelden met een 'vaste' userinterface. Ik gebruik geen inputveld in de popup. Dus de jOptionpane helpt me hier niet. Ik wil zelf kiezen hoe ik de popup inricht, maar hij moet me wel een waarde teruggeven die ik zelf bepaal.
  • maar kan je het niet zo inrichten dan? Of anders: plaats kort wat code waarin van het hoofdframe en constructie en tonen van de popup. En probeer nog iets duidelijker te maken hoe de gebruiker dan een optie selecteert en bevestigt (of moet de gebruiker iets anders doen en snap ik er dus werkelijk niets van?)
  • [b:1e6ce419eb]// code uit hoofdprogramma [/b:1e6ce419eb] // extended klasse van jDialog initialiseren.. jDialogInvoice dlgB = new jDialogInvoice(frameA, "Invoice controle", true); dlgB.setTextArea("Generate Invoice for customer x "); dlgB.setVisible(true); // nu krijgt de user de popup te zien, waar hij acties moet ondernemen. ... // wanneer dlgB gesloten wordt, gaat het programma hier verder. ... [b:1e6ce419eb]// code uit de 'popup' [/b:1e6ce419eb] Constructor, zet Label1 , 2 ..., zet TextArea, zet listbox... zet buttonA, B, C, D etc.. public void actionPerformed(ActionEvent e) { If buttonA = clicked (let niet op syntax) do some things.. If ButtonB = clicked ... If ButtonC = clicked ... // einde van de acties op deze popup // => ! popup sluiten. this.dispose(); } Hoe weet ik nu in het hoofdprogramma op welke knop van de popup de user geklikt heeft. (Eens in het hoofdprogramma teruggekomen is de popup ge'dispose'd, nietwaar?) Duidelijk? :)
  • de eerste oplossing die in mn opkomt is om in je hoofdprogramma een variabele result (van het type String of Integer of Boolean, maar niet bijv int of bool) op te nemen, deze mee te geven (verwijzing ervan, dus niet de waarde - daarom moet het ook geen simpele variabele zijn) bij het aanmaken van je Dialog. De popup kan de inhoud van die variabele uit het hoofdprogramma nu wijzigen. Hoop dat het zo duidelijk is. Dit is overigens niet de meest nette oplossing naar mijn idee, ik denk nog even verder.
  • Ok bedankt. Ik probeer dit mssn wel eens uit en denk er ook nog even over verder na. Ik denk dat het vooral m'n beknopte kennis is die het probleem vormt :)

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.