| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2165 人关注过本帖
标题:在这个awt程序中,我怎么才能在main()方法中调用paint()方法?
取消只看楼主 加入收藏
Grace_TT
Rank: 1
等 级:新手上路
威 望:1
帖 子:324
专家分:0
注 册:2005-12-21
收藏
 问题点数:0 回复次数:10 
在这个awt程序中,我怎么才能在main()方法中调用paint()方法?

程序如下:
import java.awt.*;
class SetF extends Frame{
public static void main(String argv[]){
SetF s=new SetF();

TextField tf1, tf2, tf3, tf4;

tf1 = new TextField();

tf2 = new TextField("", 20);

tf3 = new TextField("Hello!");

tf4 = new TextField("Hello", 30);
Panel p=new Panel();
p.add(tf1);
p.add(tf2);
p.add(tf3);
p.add(tf4);
s.add(p);
s.setSize(300,400);
s.setBackground(Color.pink);
s.setVisible(true);
s.repaint();//我这样调用,但是不行,“Dolly”没有显示出来。
}
public void paint(Graphics g){
g.drawString("Dolly",50,10);
}
}

怎么才能让paint()中的内容也显示出来呢?

[此贴子已经被作者于2006-5-6 17:52:22编辑过]

搜索更多相关主题的帖子: awt paint main TextField add 
2006-05-06 17:50
Grace_TT
Rank: 1
等 级:新手上路
威 望:1
帖 子:324
专家分:0
注 册:2005-12-21
收藏
得分:0 
以下是引用★王者至尊★在2006-5-6 22:47:00的发言:

不是没有显出来 而是被覆盖了 因为Frame默认流式布局
我改了一下:
import java.awt.*;
class SetF extends Frame{
public static void main(String argv[]){
SetF s=new SetF();

TextField tf1, tf2, tf3, tf4;

tf1 = new TextField();

tf2 = new TextField("", 20);

tf3 = new TextField("Hello!");

tf4 = new TextField("Hello", 30);
Panel p=new Panel();
s.setLayout(new BorderLayout());//设定布局为边界布局
p.add(tf1);
p.add(tf2);
p.add(tf3);
p.add(tf4);
s.add(p,"North"); //添加在上面
s.setSize(300,400);
s.setBackground(Color.pink);
s.setVisible(true);
s.repaint();
}
public void paint(Graphics g){
g.drawString("Dolly",100,100);
}
}


那它是怎么被覆盖的,或者说是被谁给覆盖了呢?
谢谢!

2006-05-07 19:40
Grace_TT
Rank: 1
等 级:新手上路
威 望:1
帖 子:324
专家分:0
注 册:2005-12-21
收藏
得分:0 
以下是引用★王者至尊★在2006-5-7 22:54:00的发言:
被你添加的Panel 覆盖了

那能不能让paint()方法直接在Panel上画呢?如果可以,语句要怎么写?

2006-05-08 05:58
Grace_TT
Rank: 1
等 级:新手上路
威 望:1
帖 子:324
专家分:0
注 册:2005-12-21
收藏
得分:0 
我是这样用的,但是Dolly没显示出来呀。
2006-05-08 13:00
Grace_TT
Rank: 1
等 级:新手上路
威 望:1
帖 子:324
专家分:0
注 册:2005-12-21
收藏
得分:0 
如果是s.add(p,"North"); ,那我p.repaint();能显示出来;但是如果是s.add(p),那还是显示不出来。

既然是被panel覆盖了,那我添加到panel上不应该显示不出来的呀?
2006-05-08 13:07
Grace_TT
Rank: 1
等 级:新手上路
威 望:1
帖 子:324
专家分:0
注 册:2005-12-21
收藏
得分:0 
加在中间为什么就看不见了呢?Panel并没被谁覆盖呀,不管是North,Sorth还是Center都应该可以显示才对呀。
不解。。。
2006-05-08 21:26
Grace_TT
Rank: 1
等 级:新手上路
威 望:1
帖 子:324
专家分:0
注 册:2005-12-21
收藏
得分:0 
Dolly是加在Panel上的,怎么会被Panel覆盖呢?
2006-05-08 22:57
Grace_TT
Rank: 1
等 级:新手上路
威 望:1
帖 子:324
专家分:0
注 册:2005-12-21
收藏
得分:0 
以下是引用★王者至尊★在2006-5-9 9:33:00的发言:
S.repaint()是加在 窗体上的

但是现在是p.repaint()而不是S.repaint()呀。

2006-05-09 20:00
Grace_TT
Rank: 1
等 级:新手上路
威 望:1
帖 子:324
专家分:0
注 册:2005-12-21
收藏
得分:0 
以下是引用★王者至尊★在2006-5-10 12:29:00的发言:
p.repaint()是不会被覆盖的 可以看见啊

你用shaoxuecheng 的这段代码也能看见??

2006-05-10 16:27
Grace_TT
Rank: 1
等 级:新手上路
威 望:1
帖 子:324
专家分:0
注 册:2005-12-21
收藏
得分:0 
为什么加在中间就看不见了?
2006-05-10 17:21
快速回复:在这个awt程序中,我怎么才能在main()方法中调用paint()方法?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.045477 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved