Java实现图像全屏显示
Java实现图像全屏显示
摘要:
本文包括一个简单的Java程序的源代码,该程序在全屏窗口的中心显示图像(本地文件或者从http://URL下载),其中使用了AWT Toolkit装载图像,Swing JFrame显示图像。
兼容性:
Sun Java 1.4或者更高版本
本程序由一个从标准Swing JFrame类扩展而来的Test1组成。代码的大部分在类的构造方法中:两个简单的事件listener(鼠标listener用于退出程序,窗口listener用于窗口在关闭时终止程序运行),全屏模式切换代码以及图像数据装载。
全屏模式切换代码很简单:
this.setUndecorated(true);
this.setVisible(true);
GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().setFullScreenWindow(this);
我们移除窗口的边框和菜单(setUndecorated method),确信窗口可见(setVisible),然后调用setFullScreenWindow。你可以在sun.com了解更多高级的全屏API。
程序装载和显示由命令行参数指定的图像。如果参数由http://开头,就创建一个URL对象,否则参数就作为文件名进行处理,并直接传递给AWT Toolkit的getImage方法。
Toolkit.getDefaultToolkit().getImage()方法可以装载GIF、JPEG和PNG文件。它接收字符串(文件名)或者URL对象作为其参数。
Java源代码:
import java.awt.Graphics;
import java.awt.GraphicsEnvironment;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.net.MalformedURLException;
import java.net.URL;
import javax.swing.JFrame;
public class Test1 extends JFrame
{
// this line is needed to avoid serialization warnings
private static final long serialVersionUID = 1L;
Image screenImage; // downloaded image
int w, h; // Display height and width
// Program entry
public static void main(String[] args) throws Exception
{
if (args.length < 1) // by default program will load AnyExample logo
{
new Test1("http://www.anyexample.com/i/logo.gif");
}
else
{
new Test1(args[0]); // or first command-line argument
}
}
// Class constructor
Test1(String source) throws MalformedURLException
{
// Exiting program on window close
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
// Exitig program on mouse click
addMouseListener(new MouseListener()
{
public void mouseClicked(MouseEvent e) { System.exit(0); }
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
});
// remove window frame
this.setUndecorated(true);
// window should be visible
this.setVisible(true);
// switching to fullscreen mode
GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().setFullScreenWindow(this);
// getting display resolution: width and height
w = this.getWidth();
h = this.getHeight();
System.out.println("Display resolution: " + String.valueOf(w) + "x" + String.valueOf(h));
// loading image
if (source.startsWith("http://")) // http:// URL was specified
{
screenImage = Toolkit.getDefaultToolkit().getImage(new URL(source));
}
else
{
screenImage = Toolkit.getDefaultToolkit().getImage(source); // otherwise - file
}
}
public void paint (Graphics g)
{
if (screenImage != null) // if screenImage is not null (image loaded and ready)
{
g.drawImage(screenImage, // draw it
w/2 - screenImage.getWidth(this) / 2, // at the center
h/2 - screenImage.getHeight(this) / 2, // of screen
this);
// to draw image at the center of screen
// we calculate X position as a half of screen width minus half of image width
// Y position as a half of screen height minus half of image height
}
}
}
注意:
如果图像未成功装载,本程序就没有输出。
评论暂时关闭