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

hotshot 2003-10-17 10:59:52
刚学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);
}

}

画好面板后,点一次鼠标,按程序来说,图片就应该能显示出来,但实际上,你还得点一次,不知道为什么? 高手指教~ 谢过先
...全文
29 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
realzealy 2003-10-17
  • 打赏
  • 举报
回复
的确是需要点击两次
我改了一下你的程序,
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class Test extends JFrame
{
Toolkit kit = Toolkit.getDefaultToolkit();
Image mainIco = kit.getImage(".\\image\\main.jpg");
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);


addMouseListener(new MouseAdapter() {

public void mousePressed(MouseEvent e) {
repaint();
}

public void mouseReleased(MouseEvent e) {

}

});
setSize(200,200);
setLocation(100,100);

getContentPane().add(tp);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void paint(Graphics g)
{
g.drawImage(mainIco,40,40,null);setTitle("test");
}
}
这样只要点一次就可以了,原因可能时,第一点鼠标调用的是默认的paint方法,第二次才是调用你的方法,瞎猜,不过画图最好重写paint方法
stamp80 2003-10-17
  • 打赏
  • 举报
回复
public void mousePressed(MouseEvent e) {
getGraphics().drawImage(mainIco,40,40,null);
}
null改成this。分多花不了啊,发了两个这样的帖。
alienbat 2003-10-17
  • 打赏
  • 举报
回复
update()方法。
具体不知道
zhangyong7887 2003-10-17
  • 打赏
  • 举报
回复
hotshot 2003-10-17
  • 打赏
  • 举报
回复
我都不知道为什么出来两个贴,不过真得很高兴看到这么多的热心人,我刚刚起步,暂时帮不上大家什么忙,不过一定会常来看,至少也帮各位顶一下~:)再次感谢各位的帮忙

62,612

社区成员

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

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