# JavaFX 首个程序 > 原文: [http://zetcode.com/gui/javafx/firstprograms/](http://zetcode.com/gui/javafx/firstprograms/) 在本章中,我们将创建一些基本的 JavaFX 程序。 ## 退出按钮 在下面的示例中,我们有一个`Button`控件。 当我们单击按钮时,应用终止。 按下并释放按钮时,将发送`ActionEvent`。 `QuitButtonEx.java` ```java package com.zetcode; import javafx.application.Application; import javafx.application.Platform; import javafx.event.ActionEvent; import javafx.geometry.Insets; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.layout.HBox; import javafx.stage.Stage; /** * ZetCode JavaFX tutorial * * This program has a Quit button. Clicking * on the button terminates the application. * * Author: Jan Bodnar * Website: zetcode.com * Last modified: June 2015 */ public class QuitButtonEx extends Application { @Override public void start(Stage stage) { initUI(stage); } private void initUI(Stage stage) { Button btn = new Button(); btn.setText("Quit"); btn.setOnAction((ActionEvent event) -> { Platform.exit(); }); HBox root = new HBox(); root.setPadding(new Insets(25)); root.getChildren().add(btn); Scene scene = new Scene(root, 280, 200); stage.setTitle("Quit button"); stage.setScene(scene); stage.show(); } public static void main(String[] args) { launch(args); } } ``` `Button`控件位于窗口的左上角。 事件处理器将添加到按钮。 ```java Button btn = new Button(); btn.setText("Quit"); ``` 实例化`Button`控件。 `setText()`方法设置按钮的标签。 ```java btn.setOnAction((ActionEvent event) -> { Platform.exit(); }); ``` `setOnAction()`方法设置按钮的动作,每当触发按钮时都会调用该动作。 上面的代码创建了一个匿名事件处理器。 `Platform.exit()`终止应用。 ```java HBox root = new HBox(); root.setPadding(new Insets(25)); ``` `HBox`是将其子级布置在单个水平行中的窗格。 `setPadding()`方法在窗格内容周围创建填充。 (默认填充为`Insets.EMPTY`。)这样,按钮和窗口边框的边缘之间会留有一些空间。 ```java root.getChildren().add(btn); ``` 该按钮将添加到`HBox`窗格。 ![Quit button](img/9b501a59485c542238359a21e520526f.jpg) 图:退出按钮 ## 工具提示 任何节点都可以显示工具提示。 `Tooltip`是常见的 UI 元素,通常用于显示有关场景图中节点的其他信息。 当我们将鼠标指针悬停在节点上时,将显示该图标。 `TooltipEx.java` ```java package com.zetcode; import javafx.application.Application; import javafx.geometry.Insets; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.Tooltip; import javafx.scene.layout.HBox; import javafx.stage.Stage; /** * ZetCode JavaFX tutorial * * This program creates a tooltip for * a button control. * * Author: Jan Bodnar * Website: zetcode.com * Last modified: June 2015 */ public class TooltipEx extends Application { @Override public void start(Stage stage) { initUI(stage); } private void initUI(Stage stage) { HBox root = new HBox(); root.setPadding(new Insets(20)); Button btn = new Button("Button"); Tooltip tooltip = new Tooltip("Button control"); Tooltip.install(btn, tooltip); root.getChildren().add(btn); Scene scene = new Scene(root, 300, 250); stage.setTitle("Tooltip"); stage.setScene(scene); stage.show(); } public static void main(String[] args) { launch(args); } } ``` 在示例中,我们将工具提示设置为按钮控件。 ```java Button btn = new Button("Button"); ``` 实例化`Button`控件。 ```java Tooltip tooltip = new Tooltip("Button control"); Tooltip.install(btn, tooltip); ``` 创建一个`Tooltip`并将其设置为通过`Tooltip`的`install()`方法设置的按钮。 ![Tooltip](img/b96ebcb443f5e34d715e9e137c3324cd.jpg) 图:工具提示 ## 助记符 助记符是激活支持助记符的控件的快捷键。 例如,它们可以与标签,按钮或菜单项一起使用。 助记符是通过在控件的标签上添加`_`字符来创建的。 它使下一个字符成为助记符。 字符与无鼠标修饰符(通常为 `Alt` )结合在一起。 选择的字符带有下划线,但是可以以平台特定的方式强调。 在某些平台上,仅在按下无鼠标修饰符后才对字符加下划线。 `MnemonicEx.java` ```java package com.zetcode; import javafx.application.Application; import javafx.event.ActionEvent; import javafx.geometry.Insets; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.layout.HBox; import javafx.stage.Stage; /** * ZetCode JavaFX tutorial * * This program creates a mnemonic for * a button control. * * Author: Jan Bodnar * Website: zetcode.com * Last modified: June 2015 */ public class MnemonicEx extends Application { @Override public void start(Stage stage) { initUI(stage); } private void initUI(Stage stage) { HBox root = new HBox(); root.setPadding(new Insets(20)); Button btn = new Button("_Button"); btn.setOnAction((ActionEvent event) -> { System.out.println("Button fired"); }); root.getChildren().add(btn); Scene scene = new Scene(root, 300, 250); stage.setTitle("Mnemonic"); stage.setScene(scene); stage.show(); } public static void main(String[] args) { launch(args); } } ``` 我们为按钮控件设置了一个助记符。 可以使用 `Alt + B` 键盘快捷键激活。 ```java Button btn = new Button("_Button"); ``` 在按钮的标签中,`_`字符位于`B`字符之前; 因此,`B`字符带有下划线,并包含在键盘快捷键中。 ```java btn.setOnAction((ActionEvent event) -> { System.out.println("Button fired"); }); ``` 触发按钮后,它将消息发送到控制台。 目前,有三种激活按钮的方式:单击鼠标左键, `Alt + B` 快捷方式以及`空格键` 按钮具有焦点)。 ## 设置控件样式 JavaFX 中的控件可以使用 CSS 设置样式。 `text.css` ```java #root {-fx-background-color: linear-gradient(gray, darkgray); } #text {-fx-fill:linear-gradient(orange, orangered); } ``` 此 CSS 文件为根节点和`Text`节点创建样式。 `StylingTextEx.java` ```java package com.zetcode; import javafx.application.Application; import javafx.geometry.Insets; import javafx.scene.Scene; import javafx.scene.layout.HBox; import javafx.scene.text.Font; import javafx.scene.text.FontWeight; import javafx.scene.text.Text; import javafx.stage.Stage; /** * ZetCode JavaFX tutorial * * This program styles a Text control with CSS. * * Author: Jan Bodnar * Website: zetcode.com * Last modified: June 2015 */ public class StylingTextEx extends Application { @Override public void start(Stage stage) { initUI(stage); } private void initUI(Stage stage) { HBox root = new HBox(); root.setPadding(new Insets(20)); Text text = new Text("ZetCode"); text.setFont(Font.font("Serif", FontWeight.BOLD, 76)); text.setId("text"); root.setId("root"); root.getChildren().addAll(text); Scene scene = new Scene(root); scene.getStylesheets().add(this.getClass().getResource("text.css") .toExternalForm()); stage.setTitle("Styling text"); stage.setScene(scene); stage.show(); } public static void main(String[] args) { launch(args); } } ``` 该示例为根节点创建背景渐变颜色,并为`Text`控件创建线性渐变填充。 ```java Text text = new Text("ZetCode"); text.setFont(Font.font("Serif", FontWeight.BOLD, 76)); ``` 创建一个`Text`控件。 较大的粗体衬线字体设置为控件。 ```java text.setId("text"); root.setId("root"); ``` 节点由其 ID 标识,该 ID 由`setId()`方法设置。 ```java scene.getStylesheets().add(this.getClass().getResource("text.css") .toExternalForm()); ``` 样式表已添加到`Scene`中。 ![Styled Text control](img/db572a0ae13e35d1088e1286367f7004.jpg) 图:样式文本控件 在本章中,我们创建了一些简单的 JavaFX 程序。