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

窗体与桌面的大小比例是软件运行时用户经常会注意到的一个问题。例如,在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);// 设置窗体大小
}

}

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

转载于:https://my.oschina.net/u/3212883/blog/887360

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值