我正在查看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的新手,所以如果我过于简单,我很抱歉。
答案 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
方法只抛出一种异常类型,但你没有使用那种异常类型。