Index > Javaのデスクトップアプリケーション(Windows向け)で毎回使うコードの整理
Sat, March 22, 2008

Javaのデスクトップアプリケーション(Windows向け)で毎回使うコードの整理

Javaで記述したWindows向けのデスクトップアプリケーションで 毎回コピーして使っているコードを整理しました。

locateOnScreen デスクトップ中央にJFrameを配置するメソッド

static private void locateOnScreen(JFrame frame) {
    Dimension paneSize   = frame.getSize();
    Dimension screenSize = frame.getToolkit().getScreenSize();
    frame.setLocation(
            (screenSize.width  - paneSize.width)  / 2,
            (screenSize.height - paneSize.height) / 2);
}

以下のように使います。

JFrame f=new JFrame();
f.setSize(640,480);
locateOnScreen(f);
f.setVisible(true);

LookAndFeelをWindowsにする

Windows向けのJavaアプリケーションの場合、 WindowsのLookAndFeelにすることで、JFileChooser が非常に(Windowsユーザにとって) 使いやすくなるので、気に入っていて、よく設定しています。

UIManager.LookAndFeelInfo[] installedLafs = UIManager.getInstalledLookAndFeels();
for(int i=0; i<installedLafs.length; i++){
    UIManager.LookAndFeelInfo info=installedLafs[i];
    //System.out.println( info.getName() );
    if(info.getName().trim().equals("Windows")){
        try{
            Class lnfClass = Class.forName(info.getClassName());
            LookAndFeel laf = (LookAndFeel)(lnfClass.newInstance());
            UIManager.setLookAndFeel(laf);//info.get);
        }
        catch(Exception ex){}
    }
}

ウインドウ(JFrame)のアイコン設定

ウインドウの左上に表示されるそのアプリケーションを示すアイコンを設定。

public class TestFrame extends JFrame{

    public TestFrame(){
        ImageIcon icon=TestFrame.loadIcon(this,"myicon.png");
        if(icon!=null)
            setIconImage(icon.getImage());
    }
    static ImageIcon loadIcon(Object obj,String iconfilename){
        try{
            URL url=obj.getClass().getClassLoader().getResource(iconfilename);
            ImageIcon icon=new ImageIcon(url);
            return icon;
        }
        catch(Exception ex){
            System.out.println(ex);
        }
        return null;
    }
}

ホームディレクトリとマイドキュメントディレクトリの取得

設定ファイルなど ユーザ固有の情報を保存したり、 ファイルチューザーのデフォルトディレクトリとして 使用する場合に必須となるディレクトリ。

private static File DIR_USER_HOME;
private static File DIR_MYDOCUMENTS;
static{
    String userHome=System.getProperty("user.home");
    DIR_USER_HOME=new File(userHome);
    if(DIR_USER_HOME.exists()==false){
        DIR_USER_HOME=new File(".");
    }

    DIR_MYDOCUMENTS=new File(DIR_USER_HOME,"My Documents");
    if(DIR_MYDOCUMENTS.exists()==false){
        DIR_MYDOCUMENTS=DIR_USER_HOME;
    }
}

マイドキュメントのディレクトリ取得コード

マイドキュメントのディレクトリ取得コードはちょっとアドホックです。 もっとロバストで標準的な方法があるかもしれません。 (そもそもこのコードがVISTAや日本以外のWindowsで通用するのか、未確認です。)

 Twitter
follow me on Twitter
 Categories