A JDialog is going to run on the GUI thread and you can't change that.

There are various concurrency tools in Java that will give you what you
want.  The easiest is to wait create a SynchronousQueue.  Check the Java API
docs.

On Sat, Feb 7, 2009 at 6:15 PM, Tim Martin <t...@asymptotic.co.uk> wrote:

>
> Hi all,
>
> I was wanting to create a dialog box in a (predominantly command-line)
> application where the action of the user on the dialog box is returned
> to the code that requested the dialog so we can branch based on the
> selection. It seems the most natural way of doing this in a functional
> language is to block until the dialog box is closed and then return a
> value, rather than messing with mutable state. This fits in well with
> what I want to happen in my program.
>
> I can do this quite easily with a JOptionPane, which has the right
> semantics for me, and can return a single value to indicate what
> option was chosen. So far so good.
>
> However, if I want more control over the layout and content of the
> dialog, I seem to be best served by building it myself out of a
> JDIalog [1]. I've got code that creates the JDialog and then blocks
> until it is closed, which I can control with a button and an
> ActionListener in the obvious way. However, the snag is that it
> doesn't return the outcome. The interface of JDialog seems to be built
> around the idea of having mutable objects and state, and having an
> action listener that can mutate the object and a getter method to find
> the value assigned in the listener.
>
> I imagine I can get round this by writing a thin wrapper for the
> JDialog that will handle the state in Java, but is there a pure
> Clojure way to do this kind of thing? [2] If not, is this (unlikely) a
> general problem with GUI programming in functional languages or (most
> likely, I assume) a paradigm mismatch between Swing and functional
> languages. If the latter, would the Clojure community be well-served
> by a standard library of shims for making Swing fit better into the
> functional mould?
>
> Tim
>
> [1] My experience of Swing is minimal, so I'm ready to be corrected if
> this turns out to be terribly naive.
>
> [2] Aside from unscalable hacks like having a package-level mutable
> ref that can be updated from within a listener
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To post to this group, send email to clojure@googlegroups.com
To unsubscribe from this group, send email to 
clojure+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to