Java FX外观问题

时间:2010-05-14 20:27:38

标签: java swing

我正在查看Deitel和Deitel的Java编程一书中的一些例子,其中一个例子是一个非常简单的Swing显示。因此这段代码:

   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
    }
    }

我读了一些关于如何使用

获得原生UI外观的东西
UIManager.setLookAndFeel(
            UIManager.getSystemLookAndFeelClassName());

到该计划。但是,当我将它添加到我的main方法时,它会给我一些错误。具体来说:

  

此行有多个标记      - 未处理的异常类型IllegalAccessException      - 未处理的异常类型InstantiationException      - 未处理的异常类型ClassNotFoundException      - 未处理的异常类型UnsupportedLookAndFeelException

然而,当我在Getting java applications to look native on windows - how?中详细说明我将它作为try / catch异常循环的一部分(就是它的名称?)时,我得到了正常运行的程序。

有人能用简单的语言告诉我为什么会这样吗?因为,为什么我不能直接获得系统的外观和感觉;为什么我必须在异常处理中使用它?我是Java新手,也是OOP的新手,所以如果我过于简单,我很抱歉。

1 个答案:

答案 0 :(得分:1)

Java有两种主要类型的例外:已检查异常和未经检查的异常。

您需要拥有处理已检查例外的代码。作为一般规则,方法的文档将列出它可以抛出的已检查异常。

在这种情况下,UIManager.setLookAndFeel被描述为:

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

您有两种选择:在单独的catch块中处理每个异常,或者在捕获Exception的单个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方法只抛出一种异常类型,但你没有使用那种异常类型。