Article View: borland.public.jbuilder.java.api
Article #3520Modeless Dialog Box
From: asok
Date: Sat, 13 Dec 1997 00:00
Date: Sat, 13 Dec 1997 00:00
109 lines
3326 bytes
3326 bytes
This is a multi-part message in MIME format.
--------------7BA83D2B59B3
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
When I make a dialog box (one message label and one button) modeless,
the button never fires any event. I want to create a dialog box which
displays a changing message - say number of records read, etc. and has a
cancel button to abort the process. I am able to reset the message
periodically, but when I click on the button, nothing happens. If I make
the dialog box modal, the button works but the system get stuck until I
click the button.
I am attaching snippets of the code. Can any one please advise?
--------------7BA83D2B59B3
Content-Type: text/plain; charset=us-ascii; name="MyClass1.java"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline; filename="MyClass1.java"
// excerpts from the main routine
package os.prompt;
.
.
.
.
Tools.messageBegin("title","message");
for (int j = 0;j <10;j++)
{
for (int i=0;i<delay;i++);
boolean x = Tools.messageChange("new message"+j);
if (!x)
break;
}
for (int i=0;i<delay;i++);
Tools.messageEnd();
.
.
.
// Tools class
package os.prompt;
import java.awt.*;
public class Tools {
public static StatusBox statusBox;
public static StatusMessage statusMessage;
public static Frame msgFrame;
public static void messageBegin(String t, String m){
msgFrame = new Frame();
statusBox = new StatusBox(msgFrame, t, m);
statusMessage = new StatusMessage(m);
statusMessage.addObserver(statusBox);
}
public static boolean messageChange(String m){
boolean ret = statusBox.isVisible();
if (ret)
statusMessage.setMessage(m);
return ret;
}
public static void messageEnd(){
statusMessage.deleteObservers();
statusBox.dispose();
}
}
//StatusBox extends AlertDialog -- similar to JBCL ButtonDialog class
package os.prompt;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import borland.jbcl.control.*;
public class StatusBox extends AlertDialog implements Observer{
public StatusBox(Frame frame, String title, String message) {
super(frame, title, message, "Cancel", false);//false=modeless
//show();
setVisible(true);
}
public void update(Observable o, Object oo){
StatusMessage sm = (StatusMessage)o;
setMessage(sm.msg);
setVisible(true);
//show();
}
}
// Status Message
package os.prompt;
import java.util.*;
public class StatusMessage extends Observable {
public String msg="Default Message";
public StatusMessage(String msg) {
this.msg = msg;
}
public void setMessage(String msg) {
this.msg = msg;
setChanged();
notifyObservers();
}
}
--------------7BA83D2B59B3--
Technical Details
Message-ID:
<349170BF.537D@opensesame.com.sg>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailShow Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 1089d0,c6783c499e488680,start X-Google-Attributes: gid1089d0,public From: asok <asok@opensesame.com.sg> Subject: Modeless Dialog Box Date: 1997/12/13 Message-ID: <349170BF.537D@opensesame.com.sg> X-Deja-AN: 297593947 Reply-To: asok@opensesame.com.sg Organization: open sesame Newsgroups: borland.public.jbuilder.java.api