Flex имеет более 97% поддержки браузеров и может быть лучшим способом решения таких проблем в нескольких строках:
#outer {
display: flex;
justify-content: center;
}
Вызов 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();
}
}