2016-12-02 71 views
0

我正在使用Eclipse內部的JavaFX和SceneBuilder作爲類,並且在TextArea中顯示TextField(稱爲'messageArea')時出現了獲取TextField的輸入文本(稱爲'set message')的問題「)在不同的TextArea中顯示輸入的TextField

處理該文本字段和TextArea的FXML是

<TextField fx:id="setMessage" /> <TextArea fx:id="messageArea" prefHeight="112.0" prefWidth="366.0"/>

,我一直在努力工作,與是if else聲明的內部運行Java。

我已經設置了

@FXML private TextField setMesssage @FXML private TextArea messageArea

與我的最新嘗試的存在:

messageArea.setText(setMessage.getText() + "static text to display.");

我的頭已經太深這一點,我缺少的東西很明顯邏輯。


更新: 我已經有了另一個想法。我嘗試將文本顯示附加到用戶點擊的按鈕上,並且幾乎讓它正常工作。代碼將從if else中移出,而在按鈕類中。所顯示的文字代碼

messageArea.setText("text" + messageArea);

然而,當顯示「文本」,我想它的messageArea正顯示出FXML代碼,而不是出於某種原因。

+0

你缺少一些基本概念。我建議編寫一個不需要FXML的小型獨立程序(約20行),它可以滿足你的需求。一旦你理解了更好的基本概念,你可以添加FXML。如果你仍然有問題,你可以添加你的完整的基本程序到你的問題[mcve](http://stackoverflow.com/help/mcve)。你還應該更好地解釋你正在嘗試做什麼。 – jewelsea

+0

我真的希望我能做到這一點,並且很樂意,但這是爲了一個大學學期項目,我的教授迫使我們使用SceneBuilder,並且沒有給我們任何教訓,並給了我們三個星期來完成它。 我的確得到了輸入的文本,當我點擊一個按鈕來顯示: 'messageArea.setText(setMessage.getText());' 但是現在我需要能夠出現時它來控制。這將是我想象的另一個線程。 – bonzo

回答

0

hitchhiker

import javafx.application.Application; 
import javafx.geometry.Insets; 
import javafx.scene.Scene; 
import javafx.scene.control.*; 
import javafx.scene.layout.VBox; 
import javafx.stage.Stage; 

public class TextAppender extends Application { 
    @Override 
    public void start(Stage stage) { 
     TextField textField = new TextField(); 
     textField.setPromptText("Enter text to be appended."); 
     Button append = new Button("Append"); 
     append.setDefaultButton(true); 
     TextArea textArea = new TextArea(); 
     textArea.setPromptText("Appended text is displayed here."); 
     textArea.setEditable(false); 

     append.setOnAction(event -> { 
      textArea.setText(textArea.getText() + textField.getText() + "\n"); 
      textField.clear(); 
     }); 

     VBox layout = new VBox(10); 
     layout.getChildren().addAll(
       textField, 
       append, 
       textArea 
     ); 
     layout.setPadding(new Insets(10)); 
     stage.setScene(new Scene(layout)); 
     stage.show(); 
    } 

    public static void main(String[] args) { 
     launch(); 
    } 
}