【发布时间】:2018-07-13 02:41:12
【问题描述】:
我有 1 个“ViewElements”类、1 个控制器和 1 个 FXML 文件。
ViewElements-Class 包含 FXML 的元素,例如按钮和文本字段。 Controller-Class 包含业务逻辑。
我尝试更新TextField“textfieldDateiAuswaehlen”,我想将文件的路径设置到TextField中,但我的方法不起作用。
视图元素:
public class ViewElements {
@FXML private TextField textfieldDateiAuswaehlen;
@FXML private TextArea textareaXmlContent;
@FXML private Button buttonXmlBearbeiten;
@FXML private Button buttonXmlLaden;
@FXML private Button buttonXmlOeffnen;
public ViewElements() {
this.textfieldDateiAuswaehlen= new TextField();
this.textareaXmlContent = new TextArea();
this.buttonXmlBearbeiten = new Button();
this.buttonXmlLaden = new Button();
this.buttonXmlOeffnen = new Button();
}
public TextField getTextfieldDateiAuswaehlen() {
return textfieldDateiAuswaehlen;
}
public void setTextfieldDateiAuswaehlenText(String text) {
this.textfieldDateiAuswaehlen.setText(text);
}
public String getTextfieldDateiAuswaehlenContent() {
return this.textfieldDateiAuswaehlen.getText();
}
public TextArea getTextareaXmlContent() {
return textareaXmlContent;
}
public void setTextareaXmlText(String text) {
this.textareaXmlContent.setText(text);
}
public Button getButtonXmlBearbeiten() {
return buttonXmlBearbeiten;
}
public Button getButtonXmlLaden() {
return buttonXmlLaden;
}
public Button getButtonXmlOeffnen() {
return buttonXmlOeffnen;
}}
控制器:
public class SampleController implements Initializable{
ViewElements viewElems= new ViewElements();
@FXML
private void handleButtonLaden(ActionEvent event){
System.out.println("Klicked");
}
@FXML
private void handleButtonXmlOeffnen(ActionEvent event){
FileChooser filechooser = new FileChooser();
File file = filechooser.showOpenDialog(null);
//Falls eine Datei ausgewaehlt ist
if(file != null){
//Falls TextField leer ist
if(viewElems.getTextfieldDateiAuswaehlenContent().isEmpty()) {
System.out.println(file.getAbsolutePath().toString());
viewElems.getTextfieldDateiAuswaehlen().clear();
String verzeichnis = file.getAbsolutePath().toString();
viewElems.setTextfieldDateiAuswaehlenText(verzeichnis);
Service<Void> service = new Service<Void>() {
@Override
protected Task<Void> createTask() {
return new Task<Void>() {
@Override
protected Void call() throws Exception {
Platform.runLater(() -> viewElems.setTextfieldDateiAuswaehlenText(verzeichnis));
return null;
}
};
}
};
service.start();
System.out.println("PRINT: " + viewElems.getTextfieldDateiAuswaehlenContent());
}
}
}
@Override
public void initialize(URL location, ResourceBundle resources) {
}}
在屏幕截图中,您看到路径已传递给 TextField,但 UI 中的 TextField 并未更新。
我的错误在哪里?
【问题讨论】: