如何在java窗体中插入GIF图

如何在java窗体中插入GIF图,第1张

import java.awt.*

import java.awt.event.*

import java.io.*

import javax.swing.*

public class ImageViewer

{

public static void main(String[] args)

{

JFrame frame = new ImageViewerFrame()

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

frame.show()

}

}

class ImageViewerFrame extends JFrame

{

public ImageViewerFrame()

{

setTitle("ImageViewer")

setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT)

label = new JLabel()

Container contentPane = getContentPane()

contentPane.add(label)

chooser = new JFileChooser()

chooser.setCurrentDirectory(new File("."))

JMenuBar menuBar = new JMenuBar()

setJMenuBar(menuBar)

JMenu menu = new JMenu("File")

menuBar.add(menu)

JMenuItem openItem = new JMenuItem("Open")

menu.add(openItem)

openItem.addActionListener(new

ActionListener()

{

public void actionPerformed(ActionEvent evt)

{

int r = chooser.showOpenDialog(null)

if(r == JFileChooser.APPROVE_OPTION)

{

String name

= chooser.getSelectedFile().getPath()

label.setIcon(new ImageIcon(name))

}

}

})

JMenuItem exitItem = new JMenuItem("Exit")

menu.add(exitItem)

exitItem.addActionListener(new

ActionListener()

{

public void actionPerformed(ActionEvent event)

{

System.exit(0)

}

})

}

private JLabel label

private JFileChooser chooser

private static final int DEFAULT_WIDTH = 300

private static final int DEFAULT_HEIGHT = 400

}

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

代码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/11893550.html

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

发表评论

登录后才能评论

评论列表(0条)

保存