java新手,用repaint方法重新绘图

    最近在学习paint方法的使用,想着用一个按钮来改变背景图片(就像我们平时做的那样),然后各方查资料。当然,资料是查不到多少的,因为百度首页的前几页的那几个博客,除了一个原创之外(虽然写的很晦涩难懂),其他的都是滥竽充数之徒!最让我恼火的是百度知道里面的登徒子,一个个为了点点积分而胡乱回答,真不知道那几位问问题的同路那个时候想法。

    所以我决定把我自己的repaint代码贴上,因为我冥思苦想了几个小时,终于都想明白了怎么去使用repaint才能达到自己的要求。很蠢吧?花了那么多的时间。


目的:按一个按钮来更换图片;

使用:repaint 、paintcomponent 、ActionListener

以下是源码,在eclipse nexo3.0 上可以使用

package home;



import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;


public class PaintTest extends JPanel
{
JFrame frame ;
JButton btn1 ;
JButton btn2 ;
String Loca ;

ImageIcon ii ;
Image i ;

public PaintTest ()
{
Loca = "/image/piano.jpg" ;
}
public void paintComponent (Graphics g)
{
ii = new ImageIcon (PaintTest.class.getResource(Loca)) ;
i = ii.getImage() ;/*这里是得到一个img对象,给drawimage的*/
super.paintComponent (g)  ;
g.drawImage (i,0,0,400,300,this) ; 
}
public void set ()
{
frame = new JFrame () ;

btn2 = new JButton ("b") ;/*这个button是用来测试画出来的图像是否会覆盖这个按钮的,结果是不会*/
btn2.setBounds(0, 0, 50, 50);
this.add(btn2) ;

btn1 = new JButton ("a") ;
btn1.setBounds(0, 400, 50, 50) ;
btn1.addActionListener(new ActionListener ()
{


@Override
public void actionPerformed(ActionEvent e)/*监听器,如果这里看不懂的话先去看看那部分的知识。这里总结起来就是:按一个键,改变Loca,再重绘*/
{
Loca = "/image/pic.jpg" ;/*Loca是用来放地址的,给上面的imageicon得到一个icon对象(不是image)*/
repaint () ;
}

}) ;

this.setLayout(null) ;
this.add(btn1) ;
frame.add(this) ;
frame.setSize(500, 500) ;
frame.setVisible(true) ;
}
public static void main (String [] args) 
{
PaintTest pt = new PaintTest () ;
pt.set() ;
}
}


先吃饭,有些额外的说明以后再说。

希望能帮助到大家!

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值