【javaFx】使用小记录

1、VBox:类似Android的LinearLayout竖向布局

2、HBox:类似Android的LinearLayout横向布局

布局里面添加控件:

vBox.getChildren().addAll()

添加多个或者add()添加一个

设置布局里面控件之间的边距:

hbox.setSpacing(10);

设置宽度/高度:

textField.setPrefWidth(300);
textField.setPrefHeight(300);

设置textArea自动换行:

textArea.setWrapText(true);

textArea自动滚动到底部:

print.appendText("追加文本,然后下面代码滚动到底部");
print.selectEnd(); 
print.deselect();

固定窗口大小不可调节:

primaryStage.setResizable(false);//固定大小不可调节

子线程里面需要更新UI的话:(类似Android里面的runOnUiThread())

Platform.runLater(() -> { 
    //todo 
});

拖拽文件或文字到窗口上面:

//拖拽到vBox控件里面
private void onDragInit(VBox vBox, TextField fileInputPath) {

    vBox.setOnDragOver(event -> {
        if (event.getGestureSource() != vBox){
            event.acceptTransferModes(TransferMode.ANY);
        }
        event.consume();
    });
    vBox.setOnDragDropped(event -> {
        Dragboard db = event.getDragboard();
        boolean success = false;
        if (db.hasFiles()){
            try {
                File file = db.getFiles().get(0);
                if (file != null) {
                    String absolutePath = file.getAbsolutePath();
                    fileInputPath.setText(absolutePath);//把路径写到这个文本框里面
                }
                success = true;
            }catch (Exception e){
                System.err.println(e.toString());
            }
        }else if (db.hasString()) {
            fileInputPath.setText(db.getString());//如果拖拽的是文字,就把文字写到文本框里面
            success = true;
        }
        event.setDropCompleted(success);

        event.consume();
    });
}

弹窗:

第一个参数可以选Alert.AlertType.里面的message、WARNING、Error等

Alert alert = new Alert(Alert.AlertType.WARNING, "请先选择翻译文档!"); alert.show();

文件选择器:

public void selectFile(TextField textField, Stage primaryStage) {
    FileChooser fileChooser = new FileChooser();
    fileChooser.setTitle("选择翻译文档");
    FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("Excel files (*.xlsx)", "*.xlsx");
    fileChooser.getExtensionFilters().add(extFilter);
    File file = fileChooser.showOpenDialog(primaryStage);
    if (file != null) {
        textField.setText(file.getPath());
    }
}

文件夹选择器:

public void selectFileOutDir(Hyperlink label, Stage primaryStage) {
    DirectoryChooser directoryChooser = new DirectoryChooser();
    File file = directoryChooser.showDialog(primaryStage);
    if (file != null) {
        String path = file.getPath();//选择的文件夹路径
        label.setText(path);
    }
}

打开文件/文件夹目录:

File file = new File(path);
if (file.exists()) {
    Desktop.getDesktop().open(file);
}

悬停文本提示:

Tooltip tooltip = new Tooltip();
tooltip.setText("提示的文本");
labelOutPath.setTooltip(tooltip);//悬停在labelOutPath控件上的时候显示提示文字

监听文本变化:

//labelOutPath.text改变的时候,把text也设置给tooltip.text
tooltip.textProperty().bind(labelOutPath.textProperty());

如果要绑定的类型不匹配,比如:

rectangle.xProperty().bind(textField.textProperty()); 

上面这个代码是编译不过的,要实现绑定文本字段(textField)的文本属性(textProperty)到矩形(rectangle)的 x 属性(xProperty),可以使用以下代码:

DoubleBinding xBinding = Bindings.createDoubleBinding(() -> {
    try {
        return Double.parseDouble(textField.getText());
    } catch (NumberFormatException e) {
        return 0.0;
    }
}, textField.textProperty());

rectangle.xProperty().bind(xBinding);

这段代码创建了一个 DoubleBinding 对象 xBinding,它将文本字段的文本属性转换为 double 值。如果转换失败,则默认返回 0.0。然后,将 xBinding 绑定到矩形的 x 属性上。这样,矩形的 x 属性将始终与文本字段的文本属性保持一致。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaFX是一个用于构建富客户端应用程序的Java框架,可以用来构建聊天小程序。以下是一个简单的JavaFX聊天小程序的实现步骤: 1. 创建JavaFX应用程序 首先,需要创建一个JavaFX应用程序,并设置主舞台的大小、标题等属性。可以使用Scene Builder等工具来设计用户界面。 2. 添加用户界面组件 在用户界面中添加聊天窗口、输入框、发送按钮等组件,以方便用户进行聊天。 3. 实现Socket通信 使用Java Socket API实现与服务器的通信,以接收和发送聊天消息。可以使用Java的多线程机制,将Socket通信和UI操作分别运行在不同的线程中,以避免阻塞UI线程。 4. 处理聊天消息 接收到消息后,需要将消息显示在聊天窗口中。可以使用JavaFX的ListView组件来实现聊天记录的显示。 5. 实现发送消息 当用户在输入框中输入消息并点击发送按钮时,应该将消息发送给服务器,并在本地保存聊天记录。发送消息后,应该清空输入框以便用户继续输入。 6. 错误处理和异常处理 在Socket通信中可能会出现各种异常情况,例如网络连接错误、消息格式错误等。应该对这些异常情况进行适当的处理,以保证程序的稳定性和用户体验。 以上就是使用JavaFX实现聊天小程序的基本步骤。当然,实际的开发过程中还需要考虑很多细节问题,例如用户登录、好友列表、消息加密等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值