2016-08-17 11 views
1

初めてPreferencesを使い始めました。例:Java:設定を理解する

JFrame frame = new JFrame(""); 
frame.addWindowListener(new WindowListener() { 
     @Override 
     public void windowClosing(WindowEvent e) { 
      pref.put("LAST_WIDTH", "" + frame.getWidth()); 
      pref.put("LAST_HEIGHT", "" + frame.getHeight()); 
      System.exit(0); 
     } 

最後のサイズを取得しようとすると初めてアプリケーションを起動するときに問題が発生しました。

if(pref.get("LAST_WIDTH", "") != null && pref.get("LAST_HEIGHT", "") != null){ 
     try{ 
      frame.setSize(Integer.parseInt(pref.get("LAST_WIDTH", "")), Integer.parseInt(pref.get("LAST_HEIGHT", ""))); 
     } catch(NumberFormatException e){ 
      frame.setSize(640, 480); 
     } 
    } else{ 
     frame.setSize(640, 480); 
    } 

はい、私はtry-catchの回避策を見つけましたが、どのように設定が機能するかを理解したいと思います。初めてアプリケーションを起動して、存在しないはずのキーを取得しようとすると、どのような設定が返されますか?

オペレーティングシステムはWindows 7です。

+2

は、あなたが、私は満足していない、と提供答えはそれを正しく行う方法を見せてくれた – Dici

+1

@Diciをキャッチすることが想定されていない例外をキャッチこの種のソリューションによって満たされることはありません。 –

+0

@Dici、少なくとも彼は問題を解決し、それを機能させました。 :D –

答えて

1

あなたの例ではこれを使用しています!

String a = pref.get("key", "defaultValue"); 

From the docs:

パラメータ:
        key - 関連付けられた値が返されるキー。
        def - この設定ノードにkeyに関連付けられた値がない場合に返される値です。

したがって、空の文字列をデフォルト値に置き換えてください。ところで

frame.setSize(Integer.parseInt(pref.get("LAST_WIDTH", "640")), Integer.parseInt(pref.get("LAST_HEIGHT", "480"))); 
+0

ありがとう!私は可能な解決策として2番目の議論を完全に見落としてしまった(愚かなことに、JavaDocが 'get'を正しくチェックしていない) –

関連する問題