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で通用するのか、未確認です。)