深入解析JavaFX:控件的使用和操作指南

简介: 深入解析JavaFX:控件的使用和操作指南

摘要:本文将深入解析JavaFX框架,介绍更多的控件使用方法和操作指南。通过详细的代码演示和说明,帮助读者更好地理解和运用JavaFX中常用的控件,构建出令人印象深刻的图形界面应用程序。

一、引言

JavaFX是一种强大而现代化的用户界面工具集,提供了丰富的控件和灵活的布局方式,使得开发人员能够轻松构建交互性强、视觉效果出色的图形界面应用程序。本文将以控件为主线,介绍JavaFX中常用控件的使用方法和操作指南,并通过代码演示进行详细解析。

二、JavaFX控件的分类

JavaFX提供了多种控件,按照功能和用途可以分为以下几类:

按钮类控件:Button、ToggleButton、CheckBox、RadioButton等;

标签类控件:Label、Tooltip、Hyperlink等;

文本输入类控件:TextField、PasswordField、TextArea等;

列表类控件:ListView、TreeView、ComboBox等;

表格类控件:TableView、TreeTableView等;

图片类控件:ImageView、MediaView等;

布局类控件:Pane、GridPane、AnchorPane、VBox、HBox等。

三、常用控件的使用方法和操作指南

1.按钮类控件

按钮类控件是用来触发事件的最常见的控件之一。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class Main extends Application {
    @Override
    public void start(Stage primaryStage) {
        Button btn1 = new Button("Button 1");
        btn1.setOnAction(e -> System.out.println("Button 1被点击了"));
        Button btn2 = new Button("Button 2");
        btn2.setOnAction(e -> System.out.println("Button 2被点击了"));
        VBox root = new VBox();
        root.getChildren().addAll(btn1, btn2);
        Scene scene = new Scene(root, 300, 200);
        primaryStage.setTitle("JavaFX应用程序");
        primaryStage.setScene(scene);
        primaryStage.show();
    }
    public static void main(String[] args) {
        launch(args);
    }
}

2.标签类控件

标签类控件用于显示文本或提示信息。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class Main extends Application {
    @Override
    public void start(Stage primaryStage) {
        Label label = new Label("Hello, JavaFX!");
        StackPane root = new StackPane();
        root.getChildren().add(label);
        Scene scene = new Scene(root, 300, 200);
        primaryStage.setTitle("JavaFX应用程序");
        primaryStage.setScene(scene);
        primaryStage.show();
    }
    public static void main(String[] args) {
        launch(args);
    }
}

3.文本输入类控件

文本输入类控件用于接收用户的输入。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class Main extends Application {
    @Override
    public void start(Stage primaryStage) {
        TextField textField = new TextField();
        StackPane root = new StackPane();
        root.getChildren().add(textField);
        Scene scene = new Scene(root, 300, 200);
        primaryStage.setTitle("JavaFX应用程序");
        primaryStage.setScene(scene);
        primaryStage.show();
    }
    public static void main(String[] args) {
        launch(args);
    }
}

4.列表类控件

列表类控件用于展示列表数据。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class Main extends Application {
    @Override
    public void start(Stage primaryStage) {
        TableView<User> tableView = new TableView<>();
        TableColumn<User, String> nameCol = new TableColumn<>("姓名");
        TableColumn<User, Integer> ageCol = new TableColumn<>("年龄");
        nameCol.setCellValueFactory(new PropertyValueFactory<>("name"));
        ageCol.setCellValueFactory(new PropertyValueFactory<>("age"));
        tableView.getColumns().addAll(nameCol, ageCol);
        tableView.getItems().addAll(
                new User("张三", 20),
                new User("李四", 25),
                new User("王五", 30)
        );
        StackPane root = new StackPane();
        root.getChildren().add(tableView);
        Scene scene = new Scene(root, 300, 200);
        primaryStage.setTitle("JavaFX应用程序");
        primaryStage.setScene(scene);
        primaryStage.show();
    }
    public static void main(String[] args) {
        launch(args);
    }
}

实体类

class User {
    private String name;
    private int age;
    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public int getAge() {
        return age;
    }
}

5.图片类控件

图片类控件用于显示图片。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
public class Main extends Application {
    @Override
    public void start(Stage primaryStage) throws FileNotFoundException {
        Image image = new Image(new FileInputStream("image.png"));
        ImageView imageView = new ImageView(image);
        StackPane root = new StackPane();
        root.getChildren().add(imageView);
        Scene scene = new Scene(root, 300, 200);
        primaryStage.setTitle("JavaFX应用程序");
        primaryStage.setScene(scene);
        primaryStage.show();
    }
    public static void main(String[] args) {
        launch(args);
    }
}

6.布局类控件

布局类控件用于管理其他控件的位置和大小。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class Main extends Application {
    @Override
    public void start(Stage primaryStage) {
        Label label1 = new Label("Label 1");
        Label label2 = new Label("Label 2");
        VBox box = new VBox();
        box.getChildren().addAll(label1, label2);
        StackPane root = new StackPane();
        root.getChildren().add(box);
        Scene scene = new Scene(root, 300, 200);
        primaryStage.setTitle("JavaFX应用程序");
        primaryStage.setScene(scene);
        primaryStage.show();
    }
    public static void main(String[] args) {
        launch(args);
    }
}

四、结论

本文对JavaFX中常用的控件进行了详细的介绍和操作指南。通过具体的代码演示,读者可以更加深入地了解JavaFX框架,并能够熟练运用其中的各类控件构建出令人印象深刻的图形界面应用程序。希望本文对读者在学习和使用JavaFX中的控件方面提供帮助。

参考文献:

JavaFX Documentation: https://openjfx.io/javadoc/11/ Oracle JavaFX

Tutorial:> https://docs.oracle.com/javafx/2/get_started/jfxpub-get_started.htm

是几个学习fx很好的网站

本文中介绍的代码示例和操作指南已在测试环境中验证,希望对读者有所帮助

目录
相关文章
|
5天前
|
SQL 存储 关系型数据库
数据库开发之图形化工具以及表操作的详细解析
数据库开发之图形化工具以及表操作的详细解析
21 0
|
1月前
|
机器学习/深度学习 存储 PyTorch
Pytorch中in-place操作相关错误解析及detach()方法说明
Pytorch中in-place操作相关错误解析及detach()方法说明
41 0
|
1月前
|
开发工具 git 开发者
|
2月前
|
开发框架 容器
SAP UI5 控件的 aggregation 的概念解析
SAP UI5 控件的 aggregation 的概念解析
36 0
|
1月前
|
XML 存储 JavaScript
Fiori Elements 框架里 Smart Table 控件工作原理的深入解析
Fiori Elements 框架里 Smart Table 控件工作原理的深入解析
17 0
|
4月前
|
数据处理 数据库 流计算
Flink 操作mapper、sink解析
Flink 操作mapper、sink解析
27 0
|
4月前
|
缓存 C#
C# 操作路径(Path)类方法的使用与解析运行实例
C# 操作路径(Path)类方法的使用与解析运行实例
|
3月前
|
NoSQL MongoDB Python
深入了解 Python MongoDB 操作:排序、删除、更新、结果限制全面解析
使用 sort() 方法对结果进行升序或降序排序。 sort() 方法接受一个参数用于“字段名”,一个参数用于“方向”(升序是默认方向)。
68 0
|
4月前
|
Java Android开发
Android Studio入门之按钮触控的解析及实战(附源码 超详细必看)(包括按钮控件、点击和长按事件、禁用与恢复按钮)
Android Studio入门之按钮触控的解析及实战(附源码 超详细必看)(包括按钮控件、点击和长按事件、禁用与恢复按钮)
185 0
|
6月前
|
Go
这波操作太秀了!Go语言函数变量大解析
这波操作太秀了!Go语言函数变量大解析
60 0

推荐镜像

更多