文档章节

根据桌面大小调整窗体大小

miring
 miring
发布于 2017/04/26 11:23
字数 644
阅读 19
收藏 0

窗体与桌面的大小比例是软件运行时用户经常会注意到的一个问题。例如,在1024×768的桌面上,如果放置一个很大(如1280×1024)或者很小(如10×10)的正方形窗体,会显得非常不协调,正是基于以上这种情况,所以大部分软件的窗体界面都是根据桌面的大小进行自动调整的,本实例就实现这样的功能。实例运行效果如图 输入图片说明 本实例实现的重点是如何获取桌面的大小,而获取桌面大小时,主要用到窗体的工具包Toolkit类,下面对本实例中用到的关键技术进行详细介绍。 获取窗体工具包 每个窗体类都提供了getToolkit()方法来获取窗体的工具包对象。在窗体内部已经封装了这个工具包,随时可以获取。该方法的声明如下:

public Toolkit getToolkit()

获取桌面屏幕大小 窗体的工具包提供了方法来获取当前屏幕的大小,该方法的声明如下:

public abstract Dimension getScreenSize()  throws HeadlessException

(1)在项目中创建窗体类SetFormSizeByDeskSize。 (2)编写窗体的打开事件处理方法,该方法在窗体打开时被执行,在方法中,首先获取窗体工具包对象,然后通过工具包对象的getScreenSize()方法获取屏幕的大小,最后把窗体设置为屏幕大小的80%。代码如下:``` import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.EventQueue; import java.awt.GraphicsEnvironment; import java.awt.Toolkit;

import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent;

public class SetFormSizeByDeskSize extends JFrame {

private JPanel contentPane;

/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                SetFormSizeByDeskSize frame = new SetFormSizeByDeskSize();
                frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the frame.
 */
public SetFormSizeByDeskSize() {
    addWindowListener(new WindowAdapter() {
        @Override
        public void windowOpened(WindowEvent e) {
            do_this_windowOpened(e);
        }
    });
    setTitle("\u6839\u636E\u684C\u9762\u5927\u5C0F\u8C03\u6574\u7A97\u4F53\u5927\u5C0F");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 450, 300);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    contentPane.setLayout(new BorderLayout(0, 0));
    setContentPane(contentPane);
}

protected void do_this_windowOpened(WindowEvent e) {
    Toolkit toolkit = getToolkit();// 获得窗体工具包
    Dimension screenSize = toolkit.getScreenSize();// 获取屏幕大小
    int width = (int) (screenSize.width * 0.8);// 计算窗体新宽度
    int height = (int) (screenSize.height * 0.8);// 计算窗体新宽度
    setSize(width, height);// 设置窗体大小
}

}

心法领悟:有效使用窗体的事件监听器。
窗体事件监听器是对窗体一些列活动的事件处理。其中包括窗体打开、关闭、激活、最小化等动作的事件处理方法,这些事件一般用来实现默认资源、数据的初始化与销毁等功能。

© 著作权归作者所有

上一篇: 嵌套的标题边框
下一篇: 简单的截图软件
miring
粉丝 0
博文 23
码字总数 14869
作品 0
长春
程序员
私信 提问
控件篇——MDI桌面框架

用Flex实现类似Windos的桌面效果,包括工具栏、窗体等。系统以桌面为容器的好处就是能够装载各种的子系统和应用,而不会有概念上的不一致,因为是windows的理念,海纳百川,而且能带来较熟悉...

彭博
2012/03/09
90
0
Web的桌面系统--jDesktop

jDesktop用于在Web浏览器中构建一个类似于windows的桌面,并拥有非常酷的效果和动画。可以最大/最小化窗体、调整窗体大小、拖动窗体、 更换窗体主题。它提供一种漂亮的方式来组织你的应用程序...

匿名
2010/08/31
21.8K
1
JavaScript窗体控制函数

moveBy 从当前位置水平移动窗体x个像素,垂直移动窗体y个像素,x为负数,将向左移动窗体,y为负数,将向上移动窗体 moveTo 移动窗体左上角到相对于屏幕左上角的(x,y)点,当使用负数做为参数时...

梵高
2011/08/14
0
0
怎样将CDockablePane里面的控件随着CDockablePane拉伸动态改变大小

C# Dev控件如何让Panel里面的窗体随着Panel大小改变 C# 小弟我用SplitContainer分割窗体,改变大小后,里面的控件的dock不会随之而变,请教为什么,多谢 C# flowlayoutpanel里面的没法随着窗...

开源BBS
2013/08/06
0
2
14.2-全栈Java笔记: Java Swing创建窗口,原来这么简单!!!

上节我们聊到GUI(Graphical User Interface)的概念,并学习GUI编程中主要需掌握两个包,分别是:AWT和Swing,本节我们会通过Swing程序中常用的类和控件来实现第一个窗口。 javax.swing.JF...

全栈Java
2017/08/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

利用mybatis generator生成实体类、Mapper接口以及对应的XML文件

项目中通常会遇到数据的持久化,如果是采用mybatis的orm,就会涉及到生成xml的问题,刚好mybatis官网提供了这么个插件MyBatis Generator,效果简直是棒呆。 1. 首先需要在build.gradle文件中...

啊哈关关
今天
2
0
SpringSocial相关的知识点

使用SprigSocial开发第三方登录 核心类 ServiceProvider(AbstractOauth2ServiceProvider):主要负责实现server提供商(例如QQ,微信等共有的东西),默认实现类是AbstractOauth2ServiceProvider...

chendom
今天
3
0
Java并发之AQS详解

一、概述   谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)!   类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源...

群星纪元
昨天
3
0
Fabric-sdk-java最新教程

Fabric Java SDK是Fabric区块链官方提供的用于Java应用开发的SDK,全称为Fabric-sdk-java,网上可用资料不多,本文列出了精心整理的针对Fabric Java SDK的最新精选教程。 如果希望快速掌握F...

汇智网教程
昨天
3
0
react 子组件监听props 变化

componentWillReceiveProps //已经被废弃 getDerivedStateFromProps// 推荐使用//如果条件不存在必须要返回null static getDerivedStateFromProps(props, current_stat...

一箭落旄头
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部