java中在窗体的创建一个面板中加入一个gif动态图

java中在窗体的创建一个面板中加入一个gif动态图,第1张

你是说 JPanel 吗?两种方法:

添加 JLabel,给 JLabel 添加 ImageIcon,然后放置 JLabel 到 JPanel 上就行了:

JPanel pnl = new JPanel()

......

JLabel lblImage = new JLabel(new ImageIcon("你的文件名")) //创建一个御差肢带图片的 JLabel

lblImage.setBounds(0, 0, pnl.getWidth(), pnl.getHeight()) //设置 图片的横坐标、纵坐标、宽、高

pnl.add(lblImage) //放置这个 JLabel 到你的 JPanel 上面

还有一种方法是重写 JPanel 的 paint() 方法:

class YourPanel extends JPanel {

private Image img = Toolkit.getDefaultToolkit().createImage("你的文件名") //用 Toolkit 的 createImage 方法来创建一个 Image 对象

@Override public void paint (Graphics g) {

super.paint(g)

g.drawImage(img, 0, 0, getWidth(), getHeight()) //绘制图片,第一个参数是 Image 对象,第二个参数是 横坐标,第三个是 纵坐标,第四个是 宽,第五个是 高

}

}

以上你隐式重写也可以:

JPanel pnl = new JPanel() {

@Override public void paint (Graphics g) {

...... /庆旅/但是要注意这样如果你把 Image 声明成了局部变量或者参数形式,你需要声明镇世成 final

}

}

 完全脊察可以,程序如下,这里把图片和程序放在一块,不放在一起的话。

代码Icon icon=new ImageIcon("1.gif")//要给出图片的完整的路庆毕径。

  图片资源:

import java.awt.*

import javax.swing.*

public class JFrameTest extends JFrame{

/**

* @param args

*/

private static final long serialVersionUID=1L

JFrameTest(String name){

super(name)

this.setSize(200, 200)//设置窗口大小。

this.setBackground(Color.DARK_GRAY)//设置背景颜色。

this.setLayout(new FlowLayout())//设置顺序布局。

Container con=this.getContentPane()//获取容器。

//设置按钮,为按钮添加图片。

Icon icon=new ImageIcon("1.gif")//根据路径取出图片。

JButton button=new JButton("带图片的按钮",icon)

con.add(button)//添加按钮樱差茄。

this.setDefaultCloseOperation(DISPOSE_ON_CLOSE)//设置默认的关闭方式。

}

public static void main(String[] args) {

JFrameTest test=new JFrameTest("按钮")

      test.setVisible(true)

}

}

运行结果:

实现思路:无论是何种类型,都是转换为流的形式进行的文件传输和存储。

可以通过BufferedReader 流的形式进行流缓存,之后通过readLine方法获取到缓存的内容。

BufferedReader bre = null

OutputStreamWriter pw = null//定义一个流

try {

String file = "D:/扮斗test/test.GIF"

bre = new BufferedReader(new FileReader(file))//此时获取到的bre就是厅郑磨整个文件的缓存流

pw = new OutputStreamWriter(new FileOutputStream(“D:/New.GIF”),"GBK")//确认流的输出文件和编码格式,此过程创建了“test.GIF”实例

while ((str = bre.readLine())!= null) // 判断最后一行不存在,为空结束循环

{

pw.write(str)//将要写入文件的内容,可以多次write

};

bre.close();

pw.close()//关闭流

备注:文件流用完之后必须及时通过close方法丛茄关闭,否则会一直处于打开状态,直至程序停止,增加系统负担。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11978466.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存