最新帖子 精华区 社区服务 会员列表 统计排行
主题 : 根据桌面大小调整窗体大小
mrsoft 离线
级别: 菜鸟
UID: 44315
精华: 0
发帖: 22
金币: 0 个
银元: 32 个
铜钱: 380 个
技术分: 0 个
在线时间: 4(时)
注册时间: 2017-01-09
最后登录: 2017-04-27
楼主  发表于: 2017-04-26   

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

窗体与桌面的大小比例是软件运行时用户经常会注意到的一个问题。例如,在1024×768的桌面上,如果放置一个很大(如1280×1024)或者很小(如10×10)的正方形窗体,会显得非常不协调,正是基于以上这种情况,所以大部分软件的窗体界面都是根据桌面的大小进行自动调整的,本实例就实现这样的功能。实例运行效果如图



本实例实现的重点是如何获取桌面的大小,而获取桌面大小时,主要用到窗体的工具包Toolkit类,下面对本实例中用到的关键技术进行详细介绍。

获取窗体工具包

每个窗体类都提供了getToolkit()方法来获取窗体的工具包对象。在窗体内部已经封装了这个工具包,随时可以获取。该方法的声明如下:

复制代码
  1. public Toolkit getToolkit()


获取桌面屏幕大小

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

复制代码
  1. public abstract Dimension getScreenSize()  throws HeadlessException


1)在项目中创建窗体类SetFormSizeByDeskSize

2)编写窗体的打开事件处理方法,该方法在窗体打开时被执行,在方法中,首先获取窗体工具包对象,然后通过工具包对象的getScreenSize()方法获取屏幕的大小,最后把窗体设置为屏幕大小的80%。代码如下:

复制代码
  1. 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);// 设置窗体大小

        }

    }


心法领悟:有效使用窗体的事件监听器。

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

描述
快速回复

批量上传需要先选择文件,再选择上传
认证码:

验证问题:
printf("%d", 33)
按"Ctrl+Enter"直接提交