I see 2 things:

1) It's best to explicitly start your Swing UI on Swing's event dispatch
thread. The java code to do this is:
SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    new App(); // OR whatever you're started UI code is
                }
            });

2) You're calling Thread.sleep on the same thread you're drawing your UI. If
that's the EventDispatchThread, you're stopping all drawing events while the
thread is sleeping.

Cheers
B


On Sat, Jul 24, 2010 at 06:11, Mate Toth <totm...@gmail.com> wrote:

> Hi,
>
> my problem is that during execution my presentation java applet is
> flashing. There are many components which paint to a JPanel using it's
> Graphics (.getGraphics). I think maybe the problem is that I don't
> have any "paint everything now" routine..(I don't know which Java
> routine to use, how I have to synchronize it etc..) Thanks for your
> time and help.
>
>
> I've the following code for the gui part (fe stands for "flocking-
> enviroment", I'm making a flocking library):
>
> The main loop:
>
> (defn main [starting-fe]
>  (let [first-fe starting-fe
>        panel (new JPanel)
>        frame (new JFrame)]
>
>    ;; configuring panel
>    (. panel setPreferredSize (new Dimension width height))
>
>    ;; configuring frame
>    (. frame add panel)
>    (. frame pack)
>    (. frame setVisible true)
>
>    (loop [fe first-fe]
>      (draw-fe fe panel)
>      (Thread/sleep 100)
>      (recur ((:update-f fe) fe)))))
>
>
> Blanking the screen:
>
> (defn blank-panel [panel]
>    (let [g (. panel getGraphics)]
>      (. g setColor (. Color BLACK))
>      (. g fillRect 0 0 width height))))
>
> At the end every boid drawed by this(called by the draw-fe function):
>
> (defn draw-boid [boid panel]
>    (let [[x0 x1] (:pos boid)]
>      (let [g (. panel getGraphics)]
>        (. g setColor (:color boid))
>        (. g fillRect (- x0 2) (- x1 2) 5 5)))))
>
> --
> 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
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com<clojure%2bunsubscr...@googlegroups.com>
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en




-- 
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
Brian Schlining
bschlin...@gmail.com

-- 
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
Note that posts from new members are moderated - please be patient with your 
first post.
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