2017-09-14 23 views
0

私はJava FXMLで質問があります。誰かが解決策を見つける手助けをすることができれば感謝します。ですから、ここで私がしたいことがあります:整数のような変数の値を示す動的ラベルが必要です。私は、整数の値を表示するためにlabelのメソッドsetText()を使うことができますが、ラベルのテキストを、プログラム内の整数の変化として自動的に更新する方法で設定する方法があります整数の変更ごとにsetText()メソッド?自動でラベルテキストを更新する

本当にありがとうございました

+0

あなたは、これは私が私のコードを書くためにあなたを要求していないコードのコミュニティ – Ibo

+0

を書いてくださいではありません、あなたはコードを試してみました、あなたが問題を持っていることを示す必要があります。私はアイデアを求めた。おかげで – Radintern

+0

このコミュニティはコードで作業するアイデアのために別のコミュニティを選択する必要があります。右上にある右のアイコンをクリックすると、STACK EXCHANGEコミュニティを検索できます – Ibo

答えて

1

何あなたが探してはint型の変数に、ラベルの結合であるように聞こえます。あなたはがIntegerPropertyがあなたのコントローラクラスで宣言され、labelFXidはFXML文書にあなたのラベルに割り当てられたFXidである

labelFXid.textProperty().bind(value.asString());

でこれを達成することができます。あなたはこれの良い例をUluk Biy's solutionから同様の質問に見つけることができます。この例では、彼はFXMLファイルから直接ラベルをバインドしていました。私は以下の例のようにコントローラーにコードを保存しておくとよいでしょう。

FXMLDocument.fxml

<?xml version="1.0" encoding="UTF-8"?> 

<?import java.lang.*?> 
<?import java.util.*?> 
<?import javafx.scene.*?> 
<?import javafx.scene.control.*?> 
<?import javafx.scene.layout.*?> 
<?import javafx.scene.text.*?> 

<AnchorPane id="AnchorPane" prefHeight="200" prefWidth="320" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="labelupdater.FXMLDocumentController"> 
    <children> 
     <Button fx:id="button" layoutX="126" layoutY="90" onAction="#handleButtonAction" text="Click Me!" /> 
     <Label fx:id="label" alignment="CENTER" layoutX="126" layoutY="120" minHeight="16" minWidth="69"> 
     <font> 
      <Font size="24.0" /> 
     </font></Label> 
    </children> 
</AnchorPane> 

FXMLDocumentController.java

package labelupdater; 

import java.net.URL; 
import java.util.ResourceBundle; 
import javafx.beans.property.*; 
import javafx.event.ActionEvent; 
import javafx.fxml.FXML; 
import javafx.fxml.Initializable; 
import javafx.scene.control.Label; 

public class FXMLDocumentController implements Initializable { 

    private IntegerProperty counter; 

    public int getCounter() { 
     return counter.get(); 
    } 

    public void setCounter(int value) { 
     counter.set(value); 
    } 

    public IntegerProperty counterProperty() { 
     return counter; 
    } 

    @FXML 
    private Label label; 

    @FXML 
    private void handleButtonAction(ActionEvent event) { 
     setCounter(getCounter() + 1); 
    } 

    @Override 
    public void initialize(URL url, ResourceBundle rb) { 
     counter = new SimpleIntegerProperty(0); 
     label.textProperty().bind(counter.asString()); 
    } 
} 

最終結果ボタンがsetCounter(getCounter() + 1)クリックされるたびに一つによって可変カウンタの値をインクリメントし、ラベルが自動的であることです新しい値を表示するように更新されました。カウンタ変数とバインディングは、FXMLDocumentControllerの初期化で宣言されます。

編集:タイプミス修正

関連する問題