java中怎样显示图片_[Java教程]Java中显示图片的方法

[Java教程]Java中显示图片的方法

0 2017-02-21 00:00:51

最近在做一个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();

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

bc91bb04e6e9c61e24c974e4440db8f2.gif

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();

}

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

bc91bb04e6e9c61e24c974e4440db8f2.gif

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文件运行时,居然不能显示图片,然后果断放弃了。

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

bc91bb04e6e9c61e24c974e4440db8f2.gif

bc91bb04e6e9c61e24c974e4440db8f2.gif

bc91bb04e6e9c61e24c974e4440db8f2.gif

本文网址:http://www.shaoqun.com/a/302108.html

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:admin@shaoqun.com。

JAVA

0

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值