使用Swing编写全屏程序

也许用到的机会很少,但JDK还是为我们提供了这个的功能。像许多软件中的 打印预览功能,还有某些文本编辑器中为了获得更大的编辑画面,也用到了全屏 幕模式,如果你有兴趣写一个像ACDSee这样的软件,使用全屏幕模式可以让用户 看到更大的图片画面。

如何使用全屏幕模式?

关键是java.awt.*里面的两个与显示设备有关的类:GraphicsEnvironment和 GraphicsDevice。

GraphicsEnvironment为Java应用程序提供了特定平台的 GraphicsDevice对 象和 Font 对象集合。这些GraphicsDevice可以是各种本机和远端机器的资源, 如屏幕、打印机或者是Image Buffer,甚至是Graphics2D绘图方法的目标对象。

而GraphicsDevice就是指特定的图形环境了,如屏幕和打印设备等。这样, 我们就可以用GraphicsDevice来操纵屏幕了。GraphicsDevice提供的 setFullScreenWindow()方法就是设置全屏幕用的。

由于GraphicsEnvironment的构造器是受保护的(protected),我们不能直接 构造一个GraphicsEnvironment 对象来获得GraphicsDevice对象。幸好它提供了 getLocalGraphicsEnvironment()方法,用来获得一个 GraphicsEnvironment实 例:

GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();

有了GraphicsEnvironment可以调用getDefaultScreenDevice方法获得当前的 屏幕设备了:

GraphicsDevice gd = ge.getDefaultScreenDevice();

自己动手体验一下

有了上面的简介,写一个实例来体验一下吧:

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JWindow;
public class FullScreenTest {
  public static void main(String[] args) {
    GraphicsEnvironment ge =
       GraphicsEnvironment.getLocalGraphicsEnvironment();
    GraphicsDevice gd = ge.getDefaultScreenDevice();
    FullScreenWindow myWindow = new FullScreenWindow();
    if ( gd.isFullScreenSupported() )
      gd.setFullScreenWindow(myWindow);
    else
      System.out.println("Unsupported full screen.");
  }
  static class FullScreenWindow extends JWindow {
    public FullScreenWindow() {
      this.addMouseListener(new MouseAdapter() {
        public void mousePressed(MouseEvent evt) {
          quit();
        }
      });
    }
    public void quit() {
      this.dispose();
    }
    public void paint(Graphics g) {
      g.setFont(new Font("Arial",Font.BOLD,30));
      g.setColor(Color.RED);
      g.drawString("这是全屏幕模式",100,100);
    }
  }
}

时间: 2024-10-30 10:39:42

使用Swing编写全屏程序的相关文章

界面-全屏程序,触发一条件,让系统的任务栏出现在屏幕底部?环境win7,VC++

问题描述 全屏程序,触发一条件,让系统的任务栏出现在屏幕底部?环境win7,VC++ 如题. 稍微详细一点描述.我应用程序界面是全屏的,直接是1920×1080像素设置的,并且是设置为topmost.现在使用方需要增加一点功能,就是移动鼠标到屏幕底部,希望系统的任务栏能够弹出,以切换应用程序什么的.求高手指点一二啊.环境:win7. 解决方案 给鼠标移动事件(Mouse_Move)上加上判断和处理就可以了吧,鼠标移动到底部时就取消程序最前并把任务栏给调出来. 解决方案二: 结贴啊.这个问题解决了

C#当中如何才能判断用户是否处于全屏状态(例如游戏)

问题描述 我想做一个后台热键管理软件,有些按键按下去之后有小窗口的提示,不过要是处于全屏状态的话显示小窗口会导致离开全屏模式来显示小窗口,我想在用户处于全屏时不显示小窗口,如何做到? 解决方案 解决方案二:顶解决方案三:要用API,c#本身办不到首先声明一个结构,API函数要用到[StructLayout(LayoutKind.Sequential)]publicstructRECT{publicintLeft;publicintTop;publicintRight;publicintBotto

在VC中实现全屏窗口程序

全屏显示是一些应用软件程序必不可少的功能.比如在用VC++编辑工程源文件或编辑对话框等资源时,选择菜单"ViewFull Screen",即可进入全屏显示状态,按"Esc"键后会退出全屏显示状态. 在VC++6.0中我们用AppWizard按默认方式生成单文档界面的应用程序框架.下面将先讨论点击菜单项"ViewFull Screen"实现全屏显示的方法,再讲述按"Esc"键后如何退出全屏显示状态. 1) 在CMainFrame

在MFC程序中添加全屏显示功能

这是工作室为实现全屏显示所发集的一个演示程序.你可以通过选择全屏显示菜单选项时看到相应的效果.这段代码包括两个内容:全屏显示,浮动工具条(用于恢复操作). 下图便是全屏状态和用于切换的浮动工具条 具体实现步骤: 以下的代码被添加到CmainFrame类中.这里是使用到的四个消息以及他们的简要说明: 1.OnViewFullScreen:全屏显示菜单项的句柄. 2.OnGetMinMaxInfo:捕获 WM_GETMINMAXINFO消息来让你改变窗体大小. 3.IsFullScreen:测试程序

MFC框架程序中全屏显示特性的实现

在开发图像显示程序以及视频应用程序时,常常需要全屏显示特性,比如ACD See和豪杰解霸等应用都有全屏显示功能.本文将介绍如何在MFC框架程序中实现视图的全屏显示,也就是说将标题.菜单.工具栏.状态栏以及窗口的所有边框全部被隐藏,视图充满整个屏幕.并提供全屏显示与框架窗口之间的快捷切换操作. 大家知道,在MFC框架中并没有提供现成的类或者函数来实现全屏显示特性,至少我到目前为止是没有发现.但是要实现这个特性也并不难.其基本思路是调整主窗口的大小和位置,使视图的显示充满屏幕.它需要以屏幕左上角为原

delphi程序全屏显示无标题栏覆盖整个屏幕

delphi 简单实现程序全屏显示无标题栏,覆盖整个屏幕,这个在做工控机或屏保时有用的,具体代码如下,感兴趣的朋友可以参考下哈   delphi 程序全屏显示无标题栏,覆盖整个屏幕,这个在做工控机或屏保时有用的,所以记下 复制代码 代码如下: procedure TMainFrm.FormCreate(Sender: TObject); begin with MainFrm do begin { Position form } Top := 0 ; Left := 0 ; { Go full s

独占全屏-C#写的桌面应用程序独占屏幕,现在实现开机自启动,怎么实现一开机就显示我的应用,而不是有一定的延迟

问题描述 C#写的桌面应用程序独占屏幕,现在实现开机自启动,怎么实现一开机就显示我的应用,而不是有一定的延迟 用C# wpf写的桌面应用程序需要一开机就独占全屏,现在实现开机自启动,但是启动过程中会出现操作系统的界面,我必须让用户无法有进入操作系统的机会,怎么实现一开机就显示我的应用,而不是有一定的延迟,或者屏蔽操作系统桌面,直到我的应用自启动,谢谢各位大侠 解决方案 http://jingyan.baidu.com/article/1612d5006128cde20e1eee18.html 用

微信公共号的文章中点击一张图片后,自动变为全屏浏览。这是编写代码实现的功能还是手机or微信自带的功能?

问题描述 微信公共号的文章中点击一张图片后,自动变为全屏浏览.这是编写代码实现的功能还是手机or微信自带的功能? 求解!如何不是手机的自带功能如何编写这个代码? 我写了一些放大功能的代码都达不到全屏的那种效果.. 解决方案 这个是通过微信公众平台提供的JsApi接口来实现,点击图片直接调起微信客户端自带的图片播放组件.// 调起微信客户端的图片播放组件进行播放 var srcList = []; $.each($('img'),function(i,item){ if(item.src) { s

[WPF]程序全屏

原文:[WPF]程序全屏 代码: 使用: