`

swing 的静态方法

阅读更多

import java.awt.Component;

import java.awt.Cursor;

import java.awt.Dimension;

import java.awt.Font;

import java.awt.Frame;

import java.awt.Image;

import java.awt.Point;

import java.awt.Toolkit;

import java.awt.Window;

import java.util.Enumeration;

import javax.swing.JDialog;

import javax.swing.JFrame;

import javax.swing.JRootPane;

import javax.swing.LookAndFeel;

import javax.swing.SwingUtilities;

import javax.swing.UIManager;

import javax.swing.plaf.FontUIResource;

/**

 * 提供对AWT,Swing有用的静态方法

 *

 * @author none

 */

public <st1:rtx>cl</st1:rtx>ass SwingUtil {

    /**<o:p></o:p>

     * 由此类中方法使用的默认 java.awt.Toolkit<o:p></o:p>

     */<o:p></o:p>

    public static final Toolkit toolkit = Toolkit.getDefaultToolkit();

    /**<o:p></o:p>

     * window全屏化,Window,Frame,Dialog,JWindow,JFrame,JDialog有效<o:p></o:p>

     * @param window 全屏化的window<o:p></o:p>

     * @see Window,Frame,Dialog,JWindow,JFrame,JDialog<o:p></o:p>

     */<o:p></o:p>

    public static void setSizeFu<st1:rtx>ll</st1:rtx>OfScreen(Window window) {

        Dimension screenSize = toolkit.getScreenSize();

        window.setBounds(0, 0, screenSize.width, screenSize.height);

    }

    /**<o:p></o:p>

     * window设置在屏幕中间,Window,Frame,Dialog,JWindow,JFrame,JDialog有效<o:p></o:p>

     * @param window 设置在屏幕中间的window<o:p></o:p>

     * @see Window,Frame,Dialog,JWindow,JFrame,JDialog<o:p></o:p>

     */<o:p></o:p>

    public static void setToScreenCenter(Window window) {

        Dimension screenSize = toolkit.getScreenSize();

        Dimension windowSize = window.getSize();

        if (windowSize.height > screenSize.height)

            windowSize.height = screenSize.height;

        if (windowSize.width > screenSize.width)

            windowSize.width = screenSize.width;

        window.setLocation((screenSize.width - windowSize.width) / 2,

                (screenSize.height - windowSize.height) / 2);

    }

    /**<o:p></o:p>

     * 设置全局字体<o:p></o:p>

     * @param font 全局字体<o:p></o:p>

     */<o:p></o:p>

    public static void initGlobalFontSetting(Font font) {

        FontUIResource fontRes = new FontUIResource(font);

        for (Enumeration keys = UIManager.getDefaults().keys(); keys

                .hasMoreElements();) {

            Obje<st1:rtx>ct</st1:rtx> key = keys.nextElement();

            Obje<st1:rtx>ct</st1:rtx> value = UIManager.get(key);

            if (value instanceof FontUIResource)

                UIManager.put(key, fontRes);

        }

    }

    /**<o:p></o:p>

     * Component上设置光标(Cursor)<o:p></o:p>

     * @param c 在此Component上设置光标(Cursor)<o:p></o:p>

     * @param image 设置的光标(Cursor)图案<o:p></o:p>

     */<o:p></o:p>

    public static void setCursor(Component c, Image image) {

        Cursor cursor = toolkit

                .createCustomCursor(image, new Point(0, 0), nu<st1:rtx>ll</st1:rtx>);

        c.setCursor(cursor);

    }

    /**<o:p></o:p>

     * 设置全局LookAndFeel,此后建立的Swing部件使用此LookAndFeel<o:p></o:p>

     * @param lafstr 设置的LookAndFeel<o:p></o:p>

     * @return 0:设置成功,1:设置失败<o:p></o:p>

     */<o:p></o:p>

    public static int setGloba<st1:rtx>lL</st1:rtx>ookAndFeel(String lafstr) {

        try {

            UIManager.setLookAndFeel(lafstr);

            return 0;

        } catch (Exception e) {

            return 1;

        }

    }

<o:p> </o:p>

    /**<o:p></o:p>

     * 此后建立的JFrame,JDialog是否使用LookAndFeel的窗口装饰(标题栏,边框等)<o:p></o:p>

     */<o:p></o:p>

    private static boolean isUndecorated=false;

<o:p> </o:p>

    /**<o:p></o:p>

     * 返回此后建立的JFrame,JDialog是否使用LookAndFeel的窗口装饰(标题栏,边框等)<o:p></o:p>

     * @return 此后建立的JFrame,JDialog是否使用LookAndFeel的窗口装饰(标题栏,边框等)<o:p></o:p>

     */<o:p></o:p>

    public static boolean isUndecorated() {

        return isUndecorated;

    }

<o:p> </o:p>

    /**<o:p></o:p>

     * 设置此后建立的JFrame,JDialog是否使用LookAndFeel的窗口装饰(标题栏,边框等)<o:p></o:p>

     * @param 是否此后建立的JFrame,JDialog使用LookAndFeel的窗口装饰(标题栏,边框等)<o:p></o:p>

     */<o:p></o:p>

    public static void setUndecorated(boolean undecorated) {

        LookAndFeel laf = UIManager.getLookAndFeel();

        SwingUtil.isUndecorated = undecorated;

        JFrame.setDefaultLookAndFeelDecorated(undecorated

                && laf.getSupportsWindowDecorations());

        JDialog.setDefaultLookAndFeelDecorated(undecorated

                && laf.getSupportsWindowDecorations());

    }

<o:p> </o:p>

    /**<o:p></o:p>

     * 设置JFrame是否使用LookAndFeel的窗口装饰(标题栏,边框等)<o:p></o:p>

     * @param 是否使用LookAndFeel的窗口装饰(标题栏,边框等)<o:p></o:p>

     */<o:p></o:p>

    public static void setUndecorated(JFrame frame,boolean undecorated){

        if(frame.isDisplayable()) frame.dispose();

        frame.setUndecorated(undecorated&&UIManager.getLookAndFeel().getSupportsWindowDecorations());

        JRootPane jRootPane=frame.getRootPane();

        jRootPane.setWindowDecorationStyle(jRootPane.getWindowDecorationStyle());

        if(frame.isDisplayable()) frame.show();

    }

<o:p> </o:p>

    /**<o:p></o:p>

     * 设置JDialog是否使用LookAndFeel的窗口装饰(标题栏,边框等)<o:p></o:p>

     * @param 是否使用LookAndFeel的窗口装饰(标题栏,边框等)<o:p></o:p>

     */<o:p></o:p>

    public static void setUndecorated(JDialog dialog,boolean undecorated){

        if(dialog.isDisplayable()) dialog.dispose();

        dialog.setUndecorated(undecorated&&UIManager.getLookAndFeel().getSupportsWindowDecorations());

        JRootPane jRootPane=dialog.getRootPane();

        jRootPane.setWindowDecorationStyle(jRootPane.getWindowDecorationStyle());

        if(dialog.isDisplayable()) dialog.show();

    }

    /**<o:p></o:p>

     * 更新本程序建立的所有JFrameLookAndFeel<o:p></o:p>

     */<o:p></o:p>

    public static void updateUI(){

        Frame[] frames=Frame.getFrames();

        for(int i=0;i<frames.length;i++)

            updateUI(frames[i]);

    }

    /**<o:p></o:p>

     * 更新ComponentLookAndFeel<o:p></o:p>

     * @param target 操作对象<o:p></o:p>

     */<o:p></o:p>

    public static void updateUI(Component target){

            if(target instanceof JFrame)

                updateUI((JFrame)target,isUndecorated);

            if(target instanceof JDialog)

                updateUI((JDialog)target,isUndecorated);

            SwingUtilities.updateComponentTreeUI(target);

    }

    /**<o:p></o:p>

     * 更新JFrameLookAndFeel,改变JFrame的边框,标题<o:p></o:p>

     * @param frame 操作对象<o:p></o:p>

     * @param undecorated 是否使用LookAndFeel的窗口装饰(标题栏,边框等)<o:p></o:p>

     */<o:p></o:p>

    public static void updateUI(JFrame frame,boolean undecorated){

            setUndecorated(frame,undecorated);

            SwingUtilities.updateComponentTreeUI(frame);

    }

<o:p> </o:p>

    /**<o:p></o:p>

     * 更新JDialogLookAndFeel,改变JDialog的边框,标题<o:p></o:p>

     * @param dialog 操作对象<o:p></o:p>

     * @param undecorated 是否使用LookAndFeel的窗口装饰(标题栏,边框等)<o:p></o:p>

     */<o:p></o:p>

    public static void updateUI(JDialog dialog,boolean undecorated){

            setUndecorated(dialog,undecorated);

            SwingUtilities.updateComponentTreeUI(dialog);

    }

}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics