0
我正在嘗試對TextField
的內容實施驗證檢查,並在其旁邊顯示有效性圖標。但它似乎並沒有改變圖像。這是我迄今爲止的代碼,我已經刪除了與我遇到的問題無關的任何內容。如何動態更改ImageView(JavaFX)中的圖像?
這裏的視圖類:
package mypackage.view;
import mypackage.model.Foo;
// JavaFX imports
public class MyView extends VBox {
private final Foo model;
private final MyPresenter presenter;
HBox tokenValidationbox;
TextField tokentxt;
ImageView isValidimg;
public MyView(Foo model) {
this.model = model;
initFieldData();
layoutForm();
this.presenter = new MyPresenter(model, this);
}
private void initFieldData() {
tokenValidationbox = new HBox();
tokentxt = new TextField();
isValidimg = new ImageView();
}
private void layoutForm() {
tokenValidationbox.getChildren().addAll(tokentxt, isValidimg);
this.getChildren().add(tokenValidationbox);
}
}
這是一個包含邏輯主持人類:
package mypackage.view;
import mypackage.model.Foo;
// JavaFX imports
public class MyPresenter {
private final Foo model;
private final MyView view;
public MyPresenter(Foo model, MyView view) {
this.model = model;
this.view = view;
attachEvents();
}
private void attachEvents() {
view.tokentxt.setOnAction((ActionEvent event) -> {
view.isValidimg.setImage(new Image(validationImage(view.tokentxt.getText())))
});
}
public String validationImage(String token) {
String img = "dialog-error.png";
if(isValid(token)) img = "emblem-default.png";
return getClass().getClassLoader().getResource(img).toExternalForm();
}
private static boolean isValid(String token) {
// snip
}
}
據我所知這應該檢查每當事情是改變輸入令牌是否有效在文本字段中,然後加載相應的圖像進行顯示,但圖像不顯示。
emblem-default.png
和dialog-error.png
位於項目資源文件夾,可以靜態加載(即,如果我當初始化時,它把ImageView
內的Image
構造函數,它工作得很好)
當您按下'enter'鍵時,'onAction'處理程序會被調用(如果'TextField'中的內容發生了變化,*這就是*的意思)* ???)。此外,我建議最多一次加載圖像,而不是每次創建/加載新圖像。 – fabian
爲什麼不使用改變爲綠色的文本並說有效。 – Sedrick
我在回答之前需要閱讀完整的場景。抱歉。 – Sedrick