Re: Newbie swing question
- From: zero <zero@xxxxxxx>
- Date: Tue, 29 Nov 2005 21:01:02 GMT
"Kd" <kandarp.jani@xxxxxxxxx> wrote in news:1133297401.586288.199490
@g47g2000cwa.googlegroups.com:
> Hello,
>
> I am new to java and I started off by writing a client/server based
> tic-tac-toe game using Swing. I have run myself into the following
> situation.
>
> What I am trying to do:
> My server wants print a dot (.) every few seconds on its GUI text area
> when it is waiting for input from the client.
>
> How I did it:
> I have timeout set on the socket from where server is reading for the
> client input. Upon timeout there is an exception and my catch block
> will print(try to) a dot on the server GUI text area. And then it will
> again go back to reading(waiting for) the client input.
>
Bad idea. Don't use exceptions to influence program flow. Exceptions
are supposed to be exceptional, not the rule.
> Problem:
> However out of my design flaw or whatever, this whole thing about
> waiting for Client input and printing the GUI, is happening in the same
> GUI thread.
>
> So the User Inputs -> Server GUIThread ->Waits for Client->Timesout and
> prints to the GUI->Wait for Client->Gets Client response->Prints some
> other info to the GUI
>
Have you looked into SwingUtilities.invokeLater?
> Due to this the dot(.) that i m trying to print at time out is not
> flushing on the GUI screen until the server gets the response from the
> client.
>
> Is there a way to go around this ? If no what would be a better design
> for Client/Server GUI apps WRT java swing.
>
> Thanks,
> Kandarp
>
a possible algorithm:
1a. server makes a move
1b. server starts DotThread
2a. server receives move from client
2b. server stops DotThread
DotThread would use Thread.sleep() to wait a number of seconds, and then
call
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
textOutput.append(".");
}
});
An alternative is to use a java.util.Timer which wakes up DotThread
(which would then extend TimerTask) at certain intervals. In this
implementation DotThread would not use Thread.sleep of course.
--
Beware the False Authority Syndrome
.
- References:
- Newbie swing question
- From: Kd
- Newbie swing question
- Prev by Date: Re: HTML Processing in Java
- Next by Date: Re: Help with Swing threading!
- Previous by thread: Newbie swing question
- Next by thread: checking casts
- Index(es):
Relevant Pages
|
|