【JavaFx基础】点击按钮获取姓名标签和头像图片

该程序展示了一个JavaFX应用,点击按钮后在界面上显示姓名和图片。使用了Platform.runLater()方法确保UI更新在主线程执行,通过监听图片加载进度实时更新加载状态。同时,提供了本地和网络图片加载的示例。
摘要由CSDN通过智能技术生成

一、需求描述

点击按钮,可以弹出文字和图片。

二、程序及结果

程序代码参考:

package com.example.fxtest2;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXMLLoader;
import javafx.scene.ImageCursor;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Control;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.input.Dragboard;
import javafx.scene.input.KeyCode;
import javafx.scene.input.TransferMode;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.Border;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.Pane;
import javafx.scene.shape.Circle;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.stage.Modality;
import javafx.stage.Stage;
import java.io.IOException;
import java.net.URL;
import java.util.Objects;

public class HelloApplication extends Application {

    @Override
    public void start(Stage stage) throws IOException {
        Label label=new Label("姓名");
        label.setVisible(false);
        label.setLayoutX(210);
        label.setLayoutY(365);
        Label label1=new Label("加载进度");
        label1.setVisible(false);
        label1.setLayoutX(200);
        label1.setLayoutY(350);
        Button button=new Button("获取姓名及照片");
        button.setLayoutY(400);
        button.setLayoutX(200);
        ImageView imageView=new ImageView();
        imageView.setX(100);
        imageView.setY(50);
        imageView.setFitWidth(300);
        imageView.setFitHeight(300);
        button.setOnAction(event->{

            Thread thread=new Thread(()->{
                Image image=new Image("girl.png",true);//放在resources下
                //Image image=new Image("https://hbimg.huaban.com/e11062d99c2f43c4c8a2506b43d613a85576739f2ddf2-ghOCM9_fw658",true);//网上来源
                image.progressProperty().addListener(new ChangeListener<Number>() {
                    @Override
                    public void changed(ObservableValue<? extends Number> observableValue, Number oldValue, Number newValue) {
                        int progress=(int)(newValue.doubleValue()*100);
                        label1.setText("(图片加载了"+progress+"%)");
                        label1.setVisible(true);
                    }
                });
                imageView.setImage(image);
                String newValue="林月明";
                label.setFont(Font.font("华文隶书", FontWeight.BOLD,25));//设置字体
                label.setVisible(true);
                Platform.runLater(()->{
                    label.setText(newValue);
                });
            });
            thread.start();
        });
        AnchorPane pane=new AnchorPane();
        pane.getChildren().addAll(label,button,label1,imageView);
        Scene scene=new Scene(pane,500,500);
        stage.setScene(scene);
        stage.setResizable(false);
        stage.setTitle("个人主页");
        stage.show();
        System.out.println("start()...");
    }

    @Override
    public void init() throws Exception {
        super.init();
        System.out.println("init()...");//先调用
    }

    @Override
    public void stop() throws Exception {
        super.stop();
        System.out.println("stop()...");//窗口关闭自动调用
    }

    public static void main(String[] args) {

        launch();
    }

}

运行程序,如下图1,点击“获取姓名及图片”按钮时,显示结果如下图2。

三、知识点整理

1、Platform.runLater(),任务放在队列里,在application空闲时执行队列任务;progressProperty(),非手动调用runLater,监听器自己控制运行,不用手动设置。

2、在本地获取图片来源

Image image=new Image("girl.png",true);

3、在网上获取图片来源

图片拉到上面的地址搜索框中,可以获取到图片url。

Image image=new Image("https://hbimg.huaban.com/e11062d99c2f43c4c8a2506b43d613a85576739f2ddf2-ghOCM9_fw658",true);

四、相关链接

1、图片来源(个人学习用,若侵权联系本人删除)

1)

https://hbimg.huaban.com/e11062d99c2f43c4c8a2506b43d613a85576739f2ddf2-ghOCM9_fw658

2)https://www.iconfont.cn/collections/index?spm=a313x.7781069.1998910419.d2b281273&type=2&page=2

2、Java多线程操作https://www.bilibili.com/video/BV1Qf4y1F7Zv?p=13&vd_source=841fee104972680a6cac4dbdbf144b50

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林月明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值