鱼C论坛

 找回密码
 立即注册
查看: 4486|回复: 8

[已解决]小白再求助....这个绘画问题出在哪.

[复制链接]
发表于 2017-5-9 23:24:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
package JianTin;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;

import javax.swing.JFrame;

public class Test_paint extends JFrame{
        public static void main(String[] args) {
                Test_paint mp = new Test_paint();
                       
               
        }
        public Test_paint(){
                this.setLocation(200, 200);
                this.setSize(500, 600);
                this.setVisible(true);
               
        }
       
       
       

        public void paint(Graphics g){
                this.setBackground(Color.BLUE);
                Image background = Toolkit.getDefaultToolkit().getImage("background.jpg"); //加载背景图片
        
      g.drawImage(background, 0, 0, 20, 30,this);
        
        }
}

直接调用paint函数不能粘在画板上吗???
最佳答案
2017-5-10 16:52:30
十六是只仙 发表于 2017-5-10 15:55
package JianTin;

import java.awt.Color;
public void paint(Graphics g){
    this.setBackground(Color.BLUE);
    Image background = Toolkit.getDefaultToolkit().getImage("background.jpg"); //加载背景图片
    g.drawImage(background, 0, 0, 20, 30,this);
}
请将上述这条语句
Image background = Toolkit.getDefaultToolkit().getImage("background.jpg"); 
改为如下:
Image background = Toolkit.getDefaultToolkit().getImage(Test_paint.class.getResource("图片文件名")); 
图片放在你 JianTin 包下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-5-10 10:14:16 | 显示全部楼层
本帖最后由 zlj19931010 于 2017-5-10 10:52 编辑

图片加载的方式错啦
Toolkit.getDefaultToolkit().getImage(url)
这个函数返回的iamge对象它只是记录图片的路径,具体数据要等到使用的时候去获取,即使是错误的路径也不会报错。
QQ截图20170510101334.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-10 13:17:24 | 显示全部楼层
zlj19931010 发表于 2017-5-10 10:14
图片加载的方式错啦
Toolkit.getDefaultToolkit().getImage(url)
这个函数返回的iamge对象它只是记录图片 ...

file:///C:/Users/dell/Desktop/9R%5DI7T]94V0177%7DKZI%5BA%7BE0.png


还是不行啊,哎,还报一堆错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-10 13:27:07 | 显示全部楼层
十六是只仙 发表于 2017-5-10 13:17
还是不行啊,哎,还报一堆错

你这一串是什么?

如果知道绝对路径就直接放进去就好了,getImage(绝对路径)

否则像我这样,通过class,或者classLoader,相对路径寻找

你图片放在哪里了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-10 15:55:23 | 显示全部楼层
zlj19931010 发表于 2017-5-10 13:27
你这一串是什么?

如果知道绝对路径就直接放进去就好了,getImage(绝对路径)

package JianTin;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;

import javax.swing.JFrame;

public class Test_paint extends JFrame{
        public static void main(String[] args) {
                Test_paint mp = new Test_paint();
                       
               
        }
        public Test_paint(){
                this.setLocation(200, 200);
                this.setSize(500, 600);
                this.setVisible(true);

               
        }
       
       
       

        public void paint(Graphics g){
                this.setBackground(Color.BLUE);

        }
}



其实不是图片的问题,我想问的是直接用paint函数设置背景颜色。为什么不可以在画板上显示出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-10 16:27:32 | 显示全部楼层
十六是只仙 发表于 2017-5-10 15:55
package JianTin;

import java.awt.Color;

请将继承 JFrame 换成继承 Frame
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-10 16:52:30 | 显示全部楼层    本楼为最佳答案   
十六是只仙 发表于 2017-5-10 15:55
package JianTin;

import java.awt.Color;
public void paint(Graphics g){
    this.setBackground(Color.BLUE);
    Image background = Toolkit.getDefaultToolkit().getImage("background.jpg"); //加载背景图片
    g.drawImage(background, 0, 0, 20, 30,this);
}
请将上述这条语句
Image background = Toolkit.getDefaultToolkit().getImage("background.jpg"); 
改为如下:
Image background = Toolkit.getDefaultToolkit().getImage(Test_paint.class.getResource("图片文件名")); 
图片放在你 JianTin 包下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-10 16:53:26 | 显示全部楼层
本帖最后由 zlj19931010 于 2017-5-10 16:56 编辑
十六是只仙 发表于 2017-5-10 15:55
package JianTin;

import java.awt.Color;


JFrame设置背景的话需要这样:this.getContentPane().setBackground(Color.blue);
或者
        this.setBackground(Color.BLUE);
        this.getContentPane().setVisible(false);
因为你看到的是那个contentPane,要么设置它的颜色,要么隐藏起来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-10 21:55:44 | 显示全部楼层
零度非安全 发表于 2017-5-10 16:52
请将上述这条语句

改为如下:

感恩,谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-14 13:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表