?
Solved

DrawString( ) not happening in Frame Window

Posted on 2000-04-17
6
Medium Priority
?
224 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
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

Independent Software Vendors: 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!

Question has a verified solution.

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

Introduction Java can be integrated with native programs using an interface called JNI(Java Native Interface). Native programs are programs which can directly run on the processor. JNI is simply a naming and calling convention so that the JVM (Java…
Java functions are among the best things for programmers to work with as Java sites can be very easy to read and prepare. Java especially simplifies many processes in the coding industry as it helps integrate many forms of technology and different d…
Viewers learn about the “for” loop and how it works in Java. By comparing it to the while loop learned before, viewers can make the transition easily. You will learn about the formatting of the for loop as we write a program that prints even numbers…
Viewers learn how to read error messages and identify possible mistakes that could cause hours of frustration. Coding is as much about debugging your code as it is about writing it. Define Error Message: Line Numbers: Type of Error: Break Down…
Suggested Courses
Course of the Month14 days, 9 hours left to enroll

771 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