我想全屏显示一张图片,程序编译成功,且能运行,但有时会抛出异常,代码如下:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class FullScreenTest{
public static void main(String agrs[]){
GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice gd=ge.getDefaultScreenDevice();
FullScreenWindow myWindow=new FullScreenWindow();
if(gd.isFullScreenSupported())
gd.setFullScreenWindow(myWindow);
else
System.out.println("Unsupported");
}
}
class FullScreenWindow extends JWindow {
Image m;
MediaTracker mt;
public FullScreenWindow(){
mt=new MediaTracker(this);
m=Toolkit.getDefaultToolkit().getImage("B8.jpg");//显示图片
mt.addImage(m,0);
try{
mt.waitForID(0);
}catch(InterruptedException e){e.printStackTrace();}
this.addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e){
quit();
}
});
}
public void quit(){
this.dispose();
}
public void paint(Graphics g){
g.drawImage(m,0,0,this);
g.setFont(new Font("Arial",Font.BOLD,30));
g.setColor(Color.RED);
g.drawString("this is fullscreen",100,100);
}
}
但有时会出现如下的异常,请问为什么,如何解决?
java.lang.InternalError: Could not get display mode
at sun.awt.Win32GraphicsDevice.getCurrentDisplayMode(Native Method)
at sun.awt.Win32GraphicsDevice.getDisplayMode(Win32GraphicsDevice.java:329)
at java.awt.GraphicsDevice.setFullScreenWindow(GraphicsDevice.java:195)
at sun.awt.Win32GraphicsDevice.setFullScreenWindow(Win32GraphicsDevice.java:261)
at FullScreenTest.main(FullScreenTest.java:11)
Exception in thread "main"
----------------解决方案--------------------------------------------------------
我这里运行的时候是一点问题都没有啊
----------------解决方案--------------------------------------------------------
我是有时会出现异常,有时就没事,所以觉得很奇怪
----------------解决方案--------------------------------------------------------
java.lang.InternalError: Could not get display mode
看你的异常信息,是说获取不到显示模式
我觉得挺奇怪的,怎么会获取不到显示模式呢
你一般什么时候会出现这种错误
----------------解决方案--------------------------------------------------------
这个很难说,有时运行第一次可以,叫我朋友来看,再运行一次就出问题了,搞都搞不明白,最近在对全屏幕感兴趣,对了,知不知道怎么可以定位屏幕坐标?还有,做屏幕保护程序的思想是怎样的?
----------------解决方案--------------------------------------------------------
用setBounds就可以了
至于怎么做屏保,我也不清楚
----------------解决方案--------------------------------------------------------
具体点,行不行?
----------------解决方案--------------------------------------------------------
比如,想把一个大小为(50,50)面板P放在100,300的位置,只要
P.setBounds(100,300,50,50);就可以了
====================================================
如果是全屏的话,就要用到FSEM模式了
你可以用g.drawImage(Image image,int x,int y,ImageObserver I);
来定位任何全屏显示时候的图片定位啊
但是要注意先后顺利,后来画的会把前面画的盖掉,
----------------解决方案--------------------------------------------------------