2016-08-17 54 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 - 在此首選節點沒有與密鑰關聯的值的情況下要返回的值。

所以在你的情況下,用你的默認值替換空字符串。

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

謝謝!我完全忽視了第二個參數作爲一個可能的解決方案(愚蠢的是我沒有正確地檢查JavaDoc的get) –