次のJavaFxプログラムは、ボタンを押すとマシン上の現在のIPアドレスを取得し、それを画面に表示することになっています。私は仕事にすべてを得ているが、私はタスクタスクを拡張するクラスからのテキストを更新する
MainApp.java
public class MainApp extends Application {
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("/fxml/Scene.fxml"));
Scene scene = new Scene(root);
scene.getStylesheets().add("/styles/Styles.css");
stage.setAlwaysOnTop(true);
stage.setTitle("IP Viewer");
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
私FXMLController
public class FXMLController implements Initializable {
@FXML
private void handleButtonAction(ActionEvent event) {
Task<Void> task = new IpTask();;
Thread thread = new Thread(task);
thread.setDaemon(true);
thread.start();
}
@Override
public void initialize(URL url, ResourceBundle rb) {
// TODO
}
}
IpTaskを拡張するクラスからのテキストを更新した問題だ:それは現在を取得しますIPアドレスを変更してUIを更新しようとしましたが、textIp.setText
の例外を受け取ります。textIp.setText
public class IpTask extends Task<Void> {
@FXML
private Text textIp;
@Override
protected Void call() throws Exception {
Common common = new Common();
Ip ip = common.getIp();
System.out.println("You clicked me!");
return null;
}
@Override
protected void failed() {
System.out.println("Failed!");
}
@Override
protected void succeeded() {
System.out.println("Updated");
Platform.runLater(new Runnable() {
@Override
public void run() {
textIp.setText("JUST TO SEE IF THE TEXT GETS SET");
}
});
}
}
以下は、どのように私はIpTaskクラスからtextIpテキストフィールドを更新することができますか?
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<AnchorPane id="AnchorPane" prefHeight="200" prefWidth="320" xmlns:fx="http://javafx.com/fxml" fx:controller="com.limitedenterprisesinc.ipviewer.FXMLController">
<children>
<Button layoutX="126" layoutY="90" text="Click Me!" onAction="#handleButtonAction" fx:id="button" />
<!-- <Label layoutX="126" layoutY="120" minHeight="16" minWidth="69" fx:id="label" /> -->
<javafx.scene.text.Text layoutX="126" layoutY="140" fx:id="textIp"/>
</children>
</AnchorPane>
私Scene.fxmlですか
、ちょうどあなたがそれらを必要としない、IPを取得しています! –
http://stackoverflow.com/questions/9481865/getting-the-ip-address-of-the-current-machine-using-java –