Ошибка JavaFX требует некоторых советов и помогает исправить это [дублировать]

Flex имеет более 97% поддержки браузеров и может быть лучшим способом решения таких проблем в нескольких строках:

#outer {
  display: flex;
  justify-content: center;
}
-2
задан zapl 4 June 2016 в 20:47
поделиться

1 ответ

Вызов Application.launch(...) вызывает создание экземпляра вашего подкласса Application, запускаемого инструментария приложения FX, и start() для вызова в созданном экземпляре.

Этот экземпляр Application создается путем вызова конструктора без аргументов, поэтому ваш подкласс Application, Account, должен определить один:

public Account() {
    this("");
}

Ваш класс Account фактически делая две совершенно разные вещи: он действует как экземпляр Application, а также выступает в качестве модели данных для учетной записи (инкапсуляция имени и баланса). Вероятно, вы должны разделить это на два класса, каждый из которых несет свою ответственность:

import javafx.beans.property.*;

public class Account {


    private StringProperty name = new SimpleStringProperty();
    private DoubleProperty balance = new SimpleDoubleProperty();

    public Account(String name) {
        this.name.set(name);
        this.balance.set(0.0);
    }

    public void deposit(double amount) {
        setBalance(getBalance() + amount);
    }

    public void withdraw(double amount) {
        setBalance(getBalance() - amount);
    }

    public final double getBalance() {
        return balance.get();
    }

    private final void setBalance(double value) {
        this.balance.set(value);
    }

    public ReadOnlyDoubleProperty balanceProperty() {
        return balance;
    }

    public final String getName() {
        return name.get();
    }

    public final void setName(String name) {
        this.name.set(name);
    }

    public StringProperty nameProperty() {
        return name;
    }

}

, а затем

import javafx.application.*;
import javafx.fxml.*;
import javafx.stage.*;
import javafx.scene.*;


public class AccountApp extends Application {

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

    @Override
    public void start(Stage stage) throws Exception {
        // TODO Auto-generated method stub
        FXMLLoader loader = new FXMLLoader(getClass().getResource("account.fxml"));
        Parent root = loader.load();
        stage.setTitle("Account");
        stage.setScene(new Scene(root));
        stage.sizeToScene();
        stage.show();
    }

}
2
ответ дан James_D 27 August 2018 в 10:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: