在javafx中界面主题

如果您要进行有关JavaFX的演示,那么使用JavaFX本身进行演示非常方便。 这样,您无需离开演示文稿即可轻松显示示例。 这是一个非常简单的示例。 在NetBeans中,设置一个新的JavaFX项目“ New Project”->“ JavaFX”->“ JavaFX Application”,并将其命名为“ FXPresenter”。 现在创建Slide类。 它用于加载FXML文件:

package fxpresenter;import java.io.IOException;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.layout.AnchorPane;public class Slide extends AnchorPane implements Initializable {public Slide(String slide) {FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource(slide));fxmlLoader.setRoot(this);fxmlLoader.setController(this);try {fxmlLoader.load();} catch (IOException exception) {throw new RuntimeException(exception);}}@Overridepublic void initialize(URL url, ResourceBundle rb) {}
}

接下来,我们需要一个演示文稿,其中包含幻灯片和它们之间的切换:

package fxpresenter;import java.util.ArrayList;
import java.util.List;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
import javafx.stage.Screen;public class Presentation extends Group {private List<Slide> slides;private int index;private Slide current;public EventHandler<KeyEvent> keyEventHandler;public Presentation() {this.slides = new ArrayList<>();keyEventHandler = new EventHandler<KeyEvent>() {public void handle(final KeyEvent keyEvent) {if (keyEvent.getCode() == KeyCode.LEFT) {previousSlidePlease();} else if (keyEvent.getCode() == KeyCode.RIGHT) {nextSlidePlease();}}};}public void addSlide(Slide slide) {addSlide(slides.size(), slide);}public void addSlide(int index, Slide slide) {slides.add(index, slide);}public void previousSlidePlease() {if (index > 0) {index--;}setSlide(index);}public void nextSlidePlease() {if (index < slides.size() - 1) {index++;}setSlide(index);}public void setSlide(int index) {if (current != null) {getChildren().remove(current);current.removeEventHandler(KeyEvent.KEY_PRESSED, keyEventHandler);}current = slides.get(index);current.addEventHandler(KeyEvent.KEY_PRESSED, keyEventHandler);scaleToFit();getChildren().add(slides.get(index));current.requestFocus();}void start() {index = -1;nextSlidePlease();}private void scaleToFit() {javafx.geometry.Rectangle2D screenBounds = Screen.getPrimary().getBounds();double prefWidth = current.getPrefWidth();double prefHeight = current.getPrefHeight();double scaleX = screenBounds.getWidth() / prefWidth;double scaleY = screenBounds.getHeight() / prefHeight;double centerX = (screenBounds.getWidth() / 2) - (prefWidth / 2);double centerY = (screenBounds.getHeight() / 2) - (prefHeight / 2);setTranslateX(centerX);setTranslateY(centerY);setScaleX(scaleX);setScaleY(scaleY);}
}

代码的作用应该非常明显:如果设置了一张幻灯片,它将按比例缩放以适合屏幕,并且它将监听关键事件。 按向右箭头可移至下一张幻灯片,而向右箭头键则是上一张幻灯片。 最后,我们需要一个应用程序以全屏显示整个内容:

package fxpresenter;import java.util.List;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.stage.Screen;
import javafx.stage.Stage;public class FXPresenter extends Application {@Overridepublic void start(Stage stage) throws Exception {final Presentation presentation = new Presentation();presentation.addSlide(new Slide('Slide1.fxml'));presentation.addSlide(new Slide('Slide2.fxml'));final Scene scene = new Scene(presentation);stage.setScene(scene);stage.setFullScreen(true);presentation.start();List<Screen> screens = Screen.getScreens();stage.show();}public static void main(String[] args) {launch(args);}}

你完成了。 现在,您可以继续创建幻灯片了。 对于该示例,创建两个名为“ Slide1.fxml”和“ Slide2.fxml”的新FXML文件,然后使用SceneBuilder对其进行样式设置,您便可以使用了。 这是一个小视频,显示了如何使用SceneBuilder创建幻灯片:

参考:在Eppleton博客上,我们的JCG合作伙伴 Toni Epple提供了一个最小的JavaFX演示文稿(在JavaFX中) 。

翻译自: https://www.javacodegeeks.com/2013/02/a-minimal-javafx-presentation-in-javafx.html

在javafx中界面主题

在javafx中界面主题_最小的JavaFX演示文稿(在JavaFX中)相关推荐

  1. 微型计算机中表示信息的最小单位是,[单选] 位是计算机中表示信息的最小单位,则微机中1KB表示的二进制位数是()。...

    [单选] 位是计算机中表示信息的最小单位,则微机中1KB表示的二进制位数是(). 更多相关问题 试算平衡表中,包括().A.只有期初余额而无本期发生额的科目B.没有期初余额但有本期发生额科目C.既 为 ...

  2. java中抽象接口_一篇文章让你彻底理解java中抽象类和接口

    相信大家都有这种感觉:抽象类与接口这两者有太多相似的地方,又有太多不同的地方.往往这二者可以让初学者摸不着头脑,无论是在实际编程的时候,还是在面试的时候,抽象类与接口都显得格外重要!希望看完这篇博客文 ...

  3. powerpoint转换器_如何将PowerPoint演示文稿转换为主题演讲

    powerpoint转换器 If someone sends you a Microsoft PowerPoint presentation, but you'd rather use Apple's ...

  4. 在java中添加源_关于Java:如何在Android Studio中添加链接的源文件夹?

    在Eclipse中,我可以将源文件夹作为"链接的源文件夹"添加到我的android项目中. 如何在Android Studio中实现同一目的? 或者是否可以添加外部文件夹以构建gr ...

  5. carsim中质心加速度_振动CAE分析在空调压缩机支架设计中的应用

    [摘要]本文运用有限元分析方法分析空调压缩机系统模态,并通过分析引起振动的激励源,找出压缩机支架和安装螺栓断裂的根本原因,并根据分析提出了解决措施.关键词:空调压缩机支架模态激励共振一.引言发动机轮系 ...

  6. Java中合法的关键词_优秀程序员必须掌握的java中50个关键字

    关键字和保留字的区别 正确识别java语言的关键字(keyword)和保留字(reserved word)是十分重要的.Java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或者表 ...

  7. ppt中的流程图怎么整体移动_小金在PowerPoint演示文稿中绘制了一个包含多个图形的流程图,他希望该流程图中的所有图形可以作为一个整体移动,最优的操作方法是______...

    小金在PowerPoint演示文稿中绘制了一个包含多个图形的流程图,他希望该流程图中的所有图形可以作为一个整体移动,最优的操作方法是______ 答:选择流程图中的所有图形,通过\"绘图工具 ...

  8. powerpoint转换器_将PowerPoint 2010演示文稿转换为视频

    powerpoint转换器 Sometimes you might want to convert your PowerPoint 2010 presentations to video so use ...

  9. 将其他程序中的大纲文本插入到 PowerPoint 演示文稿中

    如果要根据现有报告或其他分级显示的文档(在 Microsoft Office Word 2007 中或其他任何支持使用标题样式的程序中创建)制作演示文稿,则可以通过将文档插入到 Microsoft O ...

最新文章

  1. R语言使用DALEX包的model_performance函数对caret包生成的多个算法模型进行残差分布分析并可视化每个模型的残差反向累积分布图
  2. python decode hex_在python2.7中使用b64decode()将base64转换为hex
  3. 2012年欧洲杯德国战车止步四强赛
  4. freemarker的测试结果框架_TestNG框架Listener介绍及测试结果的收集
  5. jmeter json断言_Jmeter接口测试数据库断言的实现与设计
  6. TypeScript里的混合类型
  7. No projects are found to import
  8. 漫画:互联网大佬都是这样聊天的
  9. ES6_Promise
  10. 心语收集14:人生没有如果,但是有很多但是;人生不能后悔,但是可以拐弯。...
  11. 修改 VC 生成的 EXE 文件的图标
  12. 有关css3的一些问题
  13. Atitit 编程语言的block概念 目录 1. 匿名block 1 1.1. 函数块 方法快 1 1.2. Sp udf块 1 2. 实现block的方式 1 2.1. 早期的语言大多是采用en
  14. 阿里云docker提交及删除入门操作
  15. 《岳阳楼记》古文鉴赏
  16. java 消息提醒_JAVA怎么样实现即时消息提醒
  17. Java面试进阶指北
  18. 神经网络的基本原理,神经网络算法三大类
  19. 《算法图解》学习笔记(十):K 最近邻算法(附代码)
  20. CHIL-SQL-JOIN

热门文章

  1. Java IO: ByteArray和Filter
  2. springmvc常用注解
  3. 修改Tomcat编码方式的两种方法
  4. Oracle入门(十二)之SQL的DDL
  5. 来自学长同学分享的学习方法
  6. 使用ADO.NET查询和操作数据
  7. arrylist和linked list区别
  8. 中南大学计算机网.doc,中南大学计算机网络实验报告.doc
  9. 用python进行自然语言处理_Python自然语言处理示例:SVM和贝叶斯分类
  10. 优先队列——斐波那契堆(without source code)