0%

JavaFX 学习(3)

JavaFX 学习

这篇博客主要记录JavaFX UI控件相关知识。
参考:
[1]. 第三篇 使用JavaFX UI组件

使用JavaFX UI控件

JavaFX UI控件的包在javafx.scene.control

  1. 标签Label
    标签(Label)是一个不可编辑文本的控件,用于显示文本。

    1. 继承关系 public class Label extends Labled
      |— java.lang.Object
      | |— javafx.scene.Node
      | | |— javafx.scene.Parent
      | | | |— javafx.scene.control.Control
      | | | | |— javafx.scene.control.Labeled
      | | | | | |— javafx.scene.control.Label
    2. 构造函数

      • Label() Creates an empty label
      • Label(java.lang.String text) Creates Label with supplied text.
      • Label(java.lang.Striing text,Node graphic) Creates a label wuth the supllied text and graphic
    3. 主要属性

      • labelFor - A Label can act as a label for a different Control or Node.
      • 继承自Labeled的的属性
        contextMenu, height, maxHeight, maxWidth, minHeight, minWidth, prefHeight, prefWidth, skinClassName, skin, tooltip, width
    4. 主要方法
      • void setLabelFor(Node node) Node getLabelFor()
      • 继承自Labeled的的方法
        alignmentProperty, contentDisplayProperty, ellipsisStringProperty, fontProperty, getAlignment, getContentBias, getContentDisplay, getEllipsisString, getFont, getGraphic, getGraphicTextGap, getLabelPadding, getText, getTextAlignment, getTextFill, getTextOverrun, graphicProperty, graphicTextGapProperty, isMnemonicParsing, isUnderline, isWrapText, labelPaddingProperty, mnemonicParsingProperty, setAlignment, setContentDisplay, setEllipsisString, setFont, setGraphic, setGraphicTextGap, setMnemonicParsing, setText, setTextAlignment, setTextFill, setTextOverrun, setUnderline, setWrapText, textAlignmentProperty, textFillProperty, textOverrunProperty, textProperty, underlineProperty, wrapTextProperty
        eg:
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        public void start(Stage primaryStage) {
        try {
        Label label = new Label();
        label.setText("Hello World!");
        Scene scene = new Scene(label,400,400);
        scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
        primaryStage.setScene(scene);
        primaryStage.show();
        } catch(Exception e) {
        e.printStackTrace();
        }
        }
        QQ截图20180405100100.png
  2. 按钮Button
    JavaFX API中的Button类用来处理用户点击一个按钮时执行一个动作。

    1. 继承关系
      |— java.lang.Object
      | |— javafx.scene.Node
      | | |— javafx.scene.Parent
      | | | |— javafx.scene.control.Control
      | | | | |— javafx.scene.control.Labeled
      | | | | | |— javafx.scene.control.ButtonBase
      | | | | | | |— javafx.scene.control.Button
    2. 构造函数
      • Button() - 一个空的Button
      • Button(String text) - 一个指定文本标题的Button
      • Button(String text, Node Grapgic) - 一个指定文本标题和图标的Button
        也可以通过方法设置:
        • setText(String text) 设置文本标题
        • setGraphic(Node graphic) 指定图标
    3. 3种按钮模式
      • Normal 普通按钮
      • Default 默认按钮即为OK的意思,接受键VK_ENTER
      • Cancel 取消按钮即为Cancel的意思,接受键VK_ESC
    4. 添加Action监听器
      1
      2
      3
      button.setOnAction(ActionEvent e){
      label.setText("Accepted");
      }
    5. 添加视觉效果
      由于Button继承自Node类,因此可以为Button添加javafx.scene.effect包下的任何特殊效果。
      1
      2
      DropShadow shadow = new DropShadow();
      button.setEffect(shadow);//设置阴影效果
  3. 单选按钮(Radio Button)
  4. 开关按钮(Toggle Button)
  5. 复选框(Checkbox)
  6. 选择框(Choice Box)
  7. 文本框(Text Field)
  8. 密码框(Password Field)
  9. 滚动条(Scroll Bar)
  10. 滚动面板(Scroll Pane)
  11. 列表视图(List View)
  12. 表格视图(Table View)
  13. 树视图(Tree View)
  14. 树表视图(Tree Table View)
  15. 组合框(Combo Box)
  16. 分隔符(Separator)
  17. 滑块(Slider)
  18. 进度条和进度指示器(Progress Bar and Progress Indicator)
  19. 超链接(Hyperlink)
  20. HTML编辑器(HTML Editor)
  21. 提示信息(Tooltip)
  22. 带有标题的面板和可折叠面板(Titled Pane and Accordion)
  23. 菜单(Menu)
  24. 颜色选择器(Color Picker)
  25. 日期选择器(Date Picker)
  26. 分页控件(Pagination Control)
  27. 文件选择框(File Chooser)
  28. 自定义UI控件(Customization of UI Controls)
  29. 嵌入式平台的UI控件(UI Controls on the Embedded Platforms)

实在是太多了,,,不一一搬运了。。。

给UI控件添加样式

  1. 定义样式
    一般来说,创建的样式表都应该以.css为后缀,
    并且应该与你JavaFX程序的main class放在同一个路径下。
    eg:
    1
    2
    3
    4
    .button{
    -fx-font: 32 aria
    -fx-backgroound-color: #ccccff
    }
  2. 使用样式
    1
    2
    Scene scene = new Scene(new Group(),400,400);
    scene.getStylesheets().add("path/stylesheet.css");
  3. 分配Class Style
    1
    2
    Button buttonAccept = new Button("Accept");
    buttonAccept.getStyleClass().add("button1");
  4. 分配ID Style
    1
    2
    Button buttonFont = new Button("Font");
    buttonFont.setId("font-button");
  5. 声明内联样式
    1
    2
    Button buttonColor = new Button("Color");
    buttonColor.setStyle("-fx-background-color: slateblue; -fx-text-fill: white;");

我个人只是需要个界面,暂时还不需要了解太深入,日后再做研究。