关于屏幕信息和程序偷留的内容
对于一些不复杂的工作,可以使用Platform的runLater()
方法。在方法的形参中使用内部类实现Runnable的run
方法,这个方法会在空闲时执行。代码实现如下:
1 2 3 4 5 6 7 8 9 10 11
| public void start(Stage primaryStage) throws Exception { Platform.runLater(new Runnable() { public void run() { System.out.println("run方法里面的线程"+Thread.currentThread().getName()); } }); System.out.println("run方法外面的线程"+Thread.currentThread().getName()); }
|
关于窗口关闭,[[Stage常用属性#^e5e684|前面]]提到了怎么批量关闭,但是如果我想要所有窗口关闭但是程序不结束,那么使用setImplicitExit
方法,如果使用了该方法则关闭程序需要使用exit
方法,且exit
方法会调用stop
方法。例如
1 2 3 4 5 6 7 8 9 10 11 12
| public void start(Stage primaryStage) throws Exception {
Platform.setImplicitExit(false); primaryStage.show(); Platform.exit();
public void stop() { System.out.println("stop被调用"); }
|
当我们需要检查电脑是否支持xxx时,可以使用isSupported
,通过参数中的枚举项传入要查询的功能。例如
1 2
| System.out.println("是否支持SCENE3D:"+Platform.isSupported(ConditionalFeature.SCENE3D));
|
Screen
关于屏幕的信息,可以通过Screen
获取到。在获取信息之前需要知道一点知识,屏幕真实大小于可见大小可能不一样。好的,下面的代码将获取屏幕的位置、大小、DPI信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| public void start(Stage primaryStage) throws Exception { Screen scr=Screen.getPrimary(); Rectangle2D rec1=scr.getBounds(); Rectangle2D rec2=scr.getVisualBounds(); System.out.println("左上角x:"+rec1.getMinX()+" 左上角Y:"+rec1.getMinY()); System.out.println("右下角x:"+rec1.getMaxX()+" 右下角Y:"+rec1.getMaxY()); System.out.println("宽度:"+rec1.getWidth()+" 高度:"+rec1.getHeight()); System.out.println("左上角x:"+rec2.getMinX()+" 左上角Y:"+rec2.getMinY()); System.out.println("右下角x:"+rec2.getMaxX()+" 右下角Y:"+rec2.getMaxY()); System.out.println("宽度:"+rec2.getWidth()+" 高度:"+rec2.getHeight());
System.out.println("当前屏幕dpi:"+scr.getDpi()); Platform.exit(); }
|