| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 759 人关注过本帖
标题:[求助]写代码时候遇到了一个问题
只看楼主 加入收藏
sayid
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2006-7-3
收藏
 问题点数:0 回复次数:13 
[求助]写代码时候遇到了一个问题

刚才我看了一朋友设计的贪吃蛇代码,自己也试验了一下发现有个地方不明白,希望高人指点一下

我没有调用过paint()方法可程序运行时候自己却好像调用了,具体代码如下,文本框组件是用来测试paint()方法的

import java.awt.*;
import javax.swing.*;
public class Fram extends JFrame{
JPanel panel;
Rectangle food;
JTextField txtTemp=new JTextField();
public Fram(){
this.setTitle("食物测试");
setSize(400,400);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
food=new Rectangle(100,200,10,10);
panel=(JPanel)getContentPane();
panel.setLayout(null);
panel.add(txtTemp);
txtTemp.setBounds(200,200,80,20);

}
/**
*为什么我没有调用过paint()方法但这个方法也被实现了呢?
*该方法不是static啊
*希望高手可以为小弟指点一二
*/
public void paint(Graphics g)
{
super.paint(g);
g.setColor(Color.RED);
g.fillRect(food.x,food.y,food.width,food.height);
txtTemp.setText("color");
}

public static void main(String [] args){
new Fram();
}
}

搜索更多相关主题的帖子: 代码 
2006-07-19 22:01
aiyuheng
Rank: 1
等 级:新手上路
威 望:1
帖 子:656
专家分:0
注 册:2006-1-12
收藏
得分:0 
这个方法就是自己调用的吧 我是这么想的

when i want to ask anyone,i will ask myself first.
2006-07-19 23:02
飘飘叶子
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:597
专家分:10
注 册:2005-8-17
收藏
得分:0 
这个方法是自己调用的~

向着软件工程师的目标前进!
2006-07-19 23:07
sayid
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2006-7-3
收藏
得分:0 
拿JAVA中要这种可以自己调用的方法叫什么啊,怎么定义他呢如果我自己也想写个自己可以调用的函数

2006-07-20 16:43
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
这是个很普通的方法的很普通的用法啊

public class Test {

public void sayWords(String words){
System.out.println("You say:"+words);
}

public Test(){
this.sayWords("vlinux");
}

public static void main(String args[]){
new Test();
}
}

这样我的Test类不就自己调用了sayWords这个方法了么?有什么疑问?

淘宝杜琨
2006-07-20 18:24
yqdrrjhan
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-7-20
收藏
得分:0 
参照Thread类的run()方法,它也是自动调用的,看看java是如何设计的!

2006-07-20 18:25
sayid
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2006-7-3
收藏
得分:0 

回五楼

也许你看错了吧,我并没在构造里调用paint()啊,你的方法是在构造里调用啊


2006-07-22 10:29
surfboy
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-7-22
收藏
得分:0 

同问,我也有这个疑问?

2006-07-22 20:42
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
汗啊,白写了啊,你再仔细运行看看你的程序,有什么细微的异常?
看看那红色的方框和文本框中的color到底是什么时候才出现的!!

淘宝杜琨
2006-07-22 21:11
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
算了,我还是说穿了吧
paint不是显示调用的,而是隐式调用。
最好的证据:

你在一开始运行的时候,文本框的color和那红色的方框并不是马上就出现的。那是为什么呢?很简单,那是因为paint()方法更本就没有被调用。那怎么才能调用呢?

也是很简单,你把你的程序最小化在恢复,就会出来了。为什么?那是因为当你的程序界面被遮挡的时候,JAVA会隐式的调用paint()方法。这个时候你把color删除掉,再最小化,再恢复,color又回来了。为什么?因为paint方法再次被隐式調用。

淘宝杜琨
2006-07-22 21:30
快速回复:[求助]写代码时候遇到了一个问题
数据加载中...
 
   



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

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