例如:
Toolkit kit=Toolkit.getDefaultToolkit();
Dimension screenSize=kit.getScreenSize();
int screenWidth=screenSize.width;
int screenHeight=screenSize.height;
前两句无法理解呀,问题如下:1)Toolkit是一个抽象类,不能被实例化,那么使用getDefaultToolkit静态方法得到的kit变量是什么?
2)getScreenSize()方法是个抽象方法,怎么可以调用抽象类的抽象方法去得到后面的数据(屏幕的宽和高)?
Toolkit kit=Toolkit.getDefaultToolkit();
Dimension screenSize=kit.getScreenSize();
int screenWidth=screenSize.width;
int screenHeight=screenSize.height;
前两句无法理解呀,问题如下:1)Toolkit是一个抽象类,不能被实例化,那么使用getDefaultToolkit静态方法得到的kit变量是什么?
2)getScreenSize()方法是个抽象方法,怎么可以调用抽象类的抽象方法去得到后面的数据(屏幕的宽和高)?
2)上面得到的子类已经实现了该方法。
具体子类是什么,楼主调试时可以看到。
public static void main(String[] args) {
A a = A.getDefaultA();
System.out.println(a.getSomeValue());
}
}abstract class A {
public static A getDefaultA() {
return new B();
} public abstract Object getSomeValue();
}class B extends A {
public Object getSomeValue() {
return "some value";
}
}
import java.awt.*;
import javax.swing.*;public class SizedFrameTest{
public static void main(String[] args){
EventQueue.invokeLater(new Runnable(){
public void run(){
SizedFrame frame=new SizedFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}
class SizedFrame extends JFrame{
public SizedFrame(){
Toolkit kit=Toolkit.getDefaultToolkit();
Dimension screenSize=kit.getScreenSize();
int screenWidth=screenSize.width;
int screenHeight=screenSize.height;
setSize(screenWidth/2,screenHeight/2);
}
}
public static Toolkit getDefaultToolkit()获取默认工具包。
如果名为 "java.awt.headless" 的系统属性被设置为 true,则使用 Toolkit 的 headless 实现。 如果不存在 "java.awt.headless" 或 "java.awt.headless" 被设置为 false,且存在名为 "awt.toolkit" 的系统属性,则该属性将被视为 Toolkit 子类的名称;否则将使用特定于平台的默认 Toolkit 实现。 还可以使用 Sun 引用实现中指定的属性 'assistive_technologies' 将其他类加载到 VM 中,该属性是在 'accessibility.properties' 文件的一个行中指定的。形式是 "assistive_technologies=...",其中 "..." 是以逗号分隔的、要加载的辅助技术类的列表。每个类都以给定的顺序加载,并且要使用 Class.forName(class).newInstance() 创建每个类的单独实例。此操作在创建 AWT 工具包之后进行。所有错误都通过 AWTError 异常来处理。
返回:
默认工具包。
抛出:
AWTError - 如果不能找到工具包,或者不能访问或实例化工具包。
然后LZ自己查看一下系统属性public class Test {
public static void main(String[] args) {
System.out.println(System.getProperties().getProperty("java.awt.headless"));
System.out.println(System.getProperties().getProperty("awt.toolkit"));
}
}如果是windows平台,估计LZ能查到
sun.awt.windows.WToolkit
这个就是具体实现
可以把jre路径下的lib下的rt.jar解压
查看jre\lib\rt\sun\awt\windows路径,能找到WToolkit.class