?
Solved

DrawString( ) not happening in Frame Window

Posted on 2000-04-17
6
Medium Priority
?
226 Views
Last Modified: 2006-11-17
Hi,

I am a beginner with Java programming. Got a few stoppers here. Here is my program

import java.awt.*;

public class BaseFrame2 extends Frame
{
    TextDialog dlg;
      String message = "This is a Window";
      BaseFrame2(String title)
      {
            super(title);
            setFont(new Font("Helvetica",Font.BOLD,12));
            dlg = new TextDialog(this,"Enter Text",true);
            dlg.resize(150,100);

            MenuBar mb = new MenuBar();
            Menu m = new Menu("Colors");
            m.add(new MenuItem("Red"));
            m.add(new MenuItem("Green"));
            m.add(new MenuItem("Blue"));
            m.add(new MenuItem("-"));
            m.add(new CheckboxMenuItem("Black"));

            Menu mf= new Menu("Font");
            mf.add(new MenuItem("Regular"));
            mf.add(new MenuItem("Bold"));
            mf.add(new MenuItem("Italic"));
            m.add(mf);
            m.add(new MenuItem("Set Text"));

            mb.add(m);
            setMenuBar(mb);
      }

      public void paint(Graphics g)
        {
          g.drawString(message,20,20);
      }

From my main applet class on a Button Click Action I am popping up the above defined Frame. But I am not able see the message "This is a window" drawn into the Frame. What could be wrong? I tried even explicitly calling repaint()
in the constructor. But still I am not able to see the message drawn into my Frame Window. Why is this happening? Hope one of you there can help me..
Is there any settings I have to give to see texts drawn into my Frame.

Thank you very much..
Prince
0
Comment
Question by:princejose
6 Comments
 
LVL 1

Expert Comment

by:phutson
ID: 2724170
I don't see your validate()? Is it in the applet?


fyi from the api

validate

public void validate()

     Validates this container and all of its subcomponents.

     AWT uses validate to cause a container to lay out its subcomponents again after the components it contains have been
     added to or modified.
     Overrides:
          validate in class Component
     See Also:
          validate(), Component.invalidate()

-Philip
0
 
LVL 3

Accepted Solution

by:
falter earned 300 total points
ID: 2724323
Hu princejose,

i tried your code your message is behind the menubar.
Try something like setSize(400,400) in the constructor of the BaseFrame2 and something like
g.drawString(200,200) at the pain method.

And you will see your message.
If not play around with x and y in drawString.

regards
jf
0
 
LVL 4

Expert Comment

by:kylar
ID: 2724939
at 20,20 the String is probably being hidden inside the insets somewhere. try what falter said and see if that works.

Kylar
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

Expert Comment

by:Ash_
ID: 2725436
princejose,

like falter said, you are not setting the size of the frame at all.
preferably, call pack() in the constructor ( does the laying out & calculation of sizes). But for this, you need to add components (not use paint(). For example

BaseFrame2()
{
//previous code
//add new WhateverDisplay();
}

class WhateverDisplay
{
  public void paint(Graphics g)
  {
  //blah blah
  }
  public Dimension getPreferredSize()
  {
  //return size u want( preferably calculate it dynamically)
}
0
 
LVL 1

Expert Comment

by:samers
ID: 2725641
try to pring in another x,y axis

for example 100,100
and see what happen
0
 

Author Comment

by:princejose
ID: 2725651
Hi Falter,

 I was of the impression that the pixels are counted from beneath the menubar. But what you said is correct. When I changed the position of the string it is visible.

  Thank you very much. Thanks to all who had taken their time to respond to my query.

Prince

0

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

INTRODUCTION Working with files is a moderately common task in Java.  For most projects hard coding the file names, using parameters in configuration files, or using command-line arguments is sufficient.   However, when your application has vi…
Introduction This article is the second of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article covers the basic installation and configuration of the test automation tools used by…
This tutorial covers a step-by-step guide to install VisualVM launcher in eclipse.
This tutorial will introduce the viewer to VisualVM for the Java platform application. This video explains an example program and covers the Overview, Monitor, and Heap Dump tabs.
Suggested Courses

864 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question