这里能问关于swing的问题不?

hotshot 2003-10-17 10:59:28
刚学java图形开发,遇到一个问题: 为什么用画笔(Graphics2D)在panel上画一个图片时,页面总是得手动刷新一下它才出来

具体见此:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class Test extends JFrame
{
public static void main(String[] args) {
JFrame test = new Test();
test.setVisible(true);
}
public Test()
{
JPanel tp = new JPanel();
JLabel jl = new JLabel("test");
tp.add(jl);
Toolkit kit = Toolkit.getDefaultToolkit();
final Image mainIco = kit.getImage(".\\image\\main.jpg");
tp.addMouseListener(new MouseAdapter() {

public void mousePressed(MouseEvent e) {
getGraphics().drawImage(mainIco,40,40,null);
}

public void mouseReleased(MouseEvent e) {

}

});
setSize(200,200);
setLocation(100,100);
setTitle("test");
getContentPane().add(tp);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

}

画好面板后,点一次鼠标,按程序来说,图片就应该能显示出来,但实际上,你还得点一次,不知道为什么? 高手指教~ 谢过先
...全文
20 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
tomcatjava 2003-10-17
  • 打赏
  • 举报
回复
test.setVisible(true);
test.show();
这是一回事!
stamp80 2003-10-17
  • 打赏
  • 举报
回复
getGraphics().drawImage(mainIco,40,40,null);
null改成this
qiyongjun2003 2003-10-17
  • 打赏
  • 举报
回复
JFrame test = new Test();
// test.setVisible(true);
test.show();
hotshot 2003-10-17
  • 打赏
  • 举报
回复
谢谢各位了,改成this就ok了,特别感谢清风扑面!~
还有一个问题,就是画图的时候,书上说:老版本的sdk必须自己作图形缓冲,新的版本已经不用了,我用的是sdk1.4,怎么用drawImage的时候如果该图片第一次显示,那要等将近一秒才出来,是不适还得自己先把图调出来呢?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧