最近在做一个swing小项目,其中需要把存储在硬盘中的图片文件显示出来,总结了如下方法:

1.

Graphics g = getGraphics();

String name = "E:/CapabilityModel/out.gif";

Image img = Toolkit.getDefaultToolkit().getImage(name);

g.drawImage(img, 538, 408,585,305, null);

g.dispose();

这种方法是在界面上选取一定空间来显示图片,不能自动匹配图片大小,如果图片过大,则会产生图片较模糊,而且不能根据图片文件的内容更改来实时更新显示图片,示例图如下:

2.

JLabel imgLabel = new JLabel(new ImageIcon("D:/AGVsModel/temp/out.gif"));

setTitle("ShowImage");

JPanel cp = (JPanel) this.getContentPane();

JPanel imgPanel = new JPanel();

imgPanel.add(imgLabel);

cp.add(imgPanel, BorderLayout.CENTER);

this.setSize(950,320);

this.setVisible(true);

this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);

这种方法是以弹出一个对话框来显示图片,但也不能根据图片文件的内容更改来实时显示图片,后来百度,把第一行代码改为:

JLabel imgLabel=null;

try {

imgLabel = new JLabel(new ImageIcon(ImageIO.read(new File("E:/CapabilityModel/out.gif"))));

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

这样就达到了我想要的结果了,嘻嘻。。。示例图如下:

3.

protected Shell shell;

public static Display myDisplay;

public static boolean internalCall = false;

/**

* Open the window.

*/

public void open() {

Display display = Display.getDefault();

createContents(myDisplay);

Image img = new Image(display, "E:/CapabilityModel/out.gif");

shell.open();

center(display,shell);

GC gc = new GC(shell);

gc.drawImage(img, 0, 0);

shell.layout();

while (!shell.isDisposed()) {

if (!display.readAndDispatch()) {

display.sleep();

}

}

img.dispose();

if (internalCall) display.dispose();

}

/**

* Create contents of the window.

*/

protected void createContents(Display display) {

myDisplay = display;

shell = new Shell();

shell.setSize(900, 400);

shell.setText("Show Image");

}

public static void center(Display display, Shell shell)

{

Rectangle bounds = display.getPrimaryMonitor().getBounds();

Rectangle rect = shell.getBounds();

int x = bounds.x + (bounds.width - rect.width) / 2;

int y = bounds.y + (bounds.height - rect.height) / 2;

shell.setLocation(x, y);

}

本来挺中意这种方法的,可以实时更新显示图片,但弹出框总是显示在界面的后面,而且将项目导出成jar文件运行时,居然不能显示图片,然后果断放弃了。

写代码就是不断遇到问题,然后不断解决问题,再总结转化为自己的经验,每解决一个问题就觉得好有成就感。

未经允许,不可转载!

java展示图片_Java中显示图片的方法相关推荐

  1. java如何重写_java中如何重写一个方法

    方法的重写: 1.在子类中可以根据需要对从基类中继承来的方法进行重写. 2.重写的方法和被重写的方法必须具有相同方法名称.参数列表和返回类型. 3.重写方法不能使用比被重写的方法更严格的访问权限. 在 ...

  2. java同步关键字_Java中synchronized关键字修饰方法同步的用法详解

    Java的最基本的同步方式,即使用synchronized关键字来控制一个方法的并发访问. 每一个用synchronized关键字声明的方法都是临界区.在Java中,同一个对象的临界区,在同一时间只有 ...

  3. java.equal例子_Java中的== 和equals()方法详解与实例

    Java中的== 和equals()方法: Java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型. byte,short,char,int,long,float,double,boo ...

  4. java wait 参数_java中wait()和join()方法的区别是什么

    java中wait()和join()方法的区别是:存在不同的java包中:wait()方法用于线程间通信,它所施加的等待状态的线程可以被启动:join()方法用于在多个线程之间添加排序,它所施加的等待 ...

  5. java 结束循环_java中结束循环的方法

    java中结束循环的方法 发布时间:2020-06-25 11:31:06 来源:亿速云 阅读:180 作者:Leah 这篇文章将为大家详细讲解有关java中结束循环的方法,小编觉得挺实用的,因此分享 ...

  6. java 空白图片_java applet 显示图片 一片空白 ??

    代码:importjava.applet.Applet;importjava.awt.Graphics;importjava.awt.Image;importjava.awt.event.MouseE ...

  7. java securerandom使用_Java中的SecureRandom nextBytes()方法

    用户指定的随机字节数可以使用nextBytes()类java.security.SecureRandom中的方法获得.该方法需要一个参数,即一个随机字节数组,它返回用户指定的随机字节. 演示此的程序如 ...

  8. java 释放一个对象_JAVA中销毁一个对象的方法

    方法一:垃圾回收器 垃圾回收器是Java平台中用的最频繁的一种对象销毁方法.垃圾回收器会全程侦测Java应用程序的运行情况.当反先有些对象成为垃圾时,垃圾回收器就会销毁这些对象,并释放这些对象所占用的 ...

  9. java listfiles 使用_Java中list()和listFiles()方法之间的区别

    java.io包的名为File的类表示系统中的文件或目录(路径名).为了获得目录中所有现有文件的列表,此类提供了list()和ListFiles()方法. 它们之间的主要区别是该列表()方法返回一个字 ...

  10. java map大小_Java中HashMap的size()方法: HashMap.size() - Break易站

    Java中的HashMap HashMap类的java.util.HashMap.size()方法用于获取哈希映射HashMap中映射的大小,该映射引用Map中键值对或映射的数量. 句法: Hash_ ...

最新文章

  1. Java解析SQL记录为JSON_Oracle解析复杂json的方法
  2. Codeforces 947E Perpetual Subtraction (线性代数、矩阵对角化、DP)
  3. python用format保留三位小数_关于Python 保留小数使用format、%、round()、Decimal函数及format和%只能保留到六位问题...
  4. hdu 2602 Bone Collector(01背包)
  5. 自定义dialog弹窗html,自定义H5页面dialog弹窗
  6. 【Java】JDBC连接MySQL/SQLServer/Oracle三种数据库
  7. vue兄弟组件之间的传值,bus运用,beforeDestroy销毁,Bus.$off
  8. 轮询调度算法 Round Robin
  9. Mac source环境变量配置
  10. 电脑鼠标右键菜单太多了怎么办?Windows右键菜单设置删除方法介绍
  11. 腾讯云短信申请与使用
  12. 强化学习(一):Q-learning,附源码解读
  13. 对象存储(云存储)概述
  14. 数学之路-python计算实战(4)-Lempel-Ziv压缩(2)
  15. MySql InnoDB与MyISAM的区别
  16. 单因素方差分析(ANOVA)及其Python库
  17. 优漫动游今年流行什么UI配色
  18. 監獄脱出少女 Lie
  19. 手动解决浏览器主页被劫持的问题
  20. 【设计模式】享元(Flyweight)模式实例

热门文章

  1. Portal是什么东东
  2. 查询一个表中的两个字段值相同的数据
  3. 关于Spring Boot报错:LoggerFactory is not a Logback LoggerContext but Logback is on the classpath
  4. 不喜欢学计算机专业怎么办,录取到不喜欢的专业怎么办?说说我有所不同的“转系生活”...
  5. 电脑调节,电脑调节亮度怎么调
  6. WTL 自绘控件库 (CQsCheckBox)
  7. wordpress插件选择_如何选择2020年最好的WordPress托管(已比较)
  8. 数字基础设施可视化管理,任重而道远
  9. 生理自我、社会自我、心理自我的提出者,是詹姆斯还是奥尔波特?|小白心理-312/347考研答疑
  10. hdu 1864 最大报销额