从另一个类(Java FX)编辑标签

时间:2018-02-13 21:37:19

标签: java multithreading javafx

我有一个问题: 我有一个简单的Java FX应用程序,我有一个按钮,当我点击按钮时,线程任务开始,每秒都要更改一个标签:

MyController.java

For Each Rng2 In WorkRng2
    If Rng2.Value = 0 Or Rng2.Value = "" Or Rng2.Offset(0, 3).Value = "Define" Or Sum(Rng2.EntireRow) = Rng2.Value Then
        Rng2.Value = Rng2.Offset(-1, 0).Value
    End If
Next

Main.java是标准的

CheckSystemTime.java

package application;

import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeUnit.*;
import java.util.*;
import java.text.DateFormat;


public class MyController implements Initializable{

    @FXML
    private Button myButton;
    @FXML
    private TextField myCountry;
    @FXML
    public Label myTime;

    @Override
    public void initialize(URL location, ResourceBundle resources) {
        // TODO Auto-generated method stub
    }

    public void startTimeThread(ActionEvent event) {
        ScheduledThreadPoolExecutor eventPool =  new ScheduledThreadPoolExecutor(3);
        eventPool.scheduleAtFixedRate
        (new CheckSystemTime(), 0, 2, TimeUnit.SECONDS);
        myButton.setDisable(true);
    }

    public void setLabel(String text) {
        myTime.setText(text);
    }
}

所以我的问题是,我如何能够从CheckSystemTime类访问setLabel方法? 我希望你能帮助我如何解决这个问题

1 个答案:

答案 0 :(得分:1)

MyControllerLabeltextProperty的{​​{1}}添加到Label的构造函数中。然后,您可以在CheckSystemTime内保留本地参考。然后,您可以在run方法中访问它。但请确保在CheckSystemTime内包含每个与UI相关的调用。