2010-05-14 62 views
0

我正在查看Deitel和Deitel的書中有關Java編程的一些示例,其中第一個示例是一個非常簡單的Swing顯示。因此,該代碼片段:Java FX外觀和感覺的問題

import javax.swing.*; 

    public class cdea {  

public static void main(String args[]){ 
        JOptionPane.showMessageDialog(null,"\"Welcome to Java Programming!\""); 
        System.exit(0); 

      //end method main 
    } 
    } 

我用

UIManager.setLookAndFeel(
      UIManager.getSystemLookAndFeelClassName()); 

的程序讀取關於一個如何獲得原生UI的外觀和感覺一些東西。但是,當我將這添加到我的主要方法時,它會給我一些錯誤。具體做法是:

在該行 多個標記 - 未處理的異常類型IllegalAccessException - 未處理的異常類型InstantiationException - 未處理的異常類型的ClassNotFoundException - 未處理的異常類型UnsupportedLookAndFeelException

然而,當我使用它的一部分的try/catch異常循環(就是它被稱爲?)的詳細信息Getting java applications to look native on windows - how?,我得到程序正常運行。

任何人都可以用簡單的語言告訴我爲什麼這樣嗎?如同爲什麼我無法直接獲得系統的外觀和感覺;爲什麼我必須在異常處理中使用它?我是Java的新手,一般都是面向對象,所以如果我太簡單了,我很抱歉。

回答

1

Java有兩種主要類型的異常:檢查異常和未檢查異常。

您需要有處理選中的例外的代碼。作爲一般規則,方法的文檔將列出哪些檢查了它可能拋出的異常。

在這種情況下,UIManager.setLookAndFeel被描述爲這樣的:

public static void setLookAndFeel(String className) 
          throws ClassNotFoundException, 
            InstantiationException, 
            IllegalAccessException, 
            UnsupportedLookAndFeelException 

有兩個選擇:手柄每個這些異常在單獨的catch塊,或在映入異常單個catch塊處理它們。在這種情況下,我相信可以在一個區塊內處理它,因爲Swing會默認回到跨平臺的外觀和感覺,如果它真的不能更改L & Fs。

try { 
    UIManager.setLookAndFeel(
       UIManager.getSystemLookAndFeelClassName()); 
} catch (Exception e) { 
    // Any handling you want to do here, possibly logging 
    // Optionally, you could just do... nothing. 
} 

注:還有第二個setLookAndFeel方法拋出只是一個異常類型,但你不使用的那一個。

+0

謝謝你的清晰解釋! :)所以這基本上意味着我必須始終查看Java庫中的特定方法是否在使用它之前檢查了異常? – drachenfels 2010-05-14 23:13:10

+0

不幸的是,是的。如果你使用IDE,它可能有一個快捷方式爲你添加一個try/catch塊(在Eclipse中,它是Alt-Shift-Z,然後是彈出菜單中的第一個選項)。 – Powerlord 2010-05-15 14:54:11