Так что я работаю над любимым проектом, по сути, оцифровываю книгу приключенческих ролей «Сделай сам».
Я перешел на использование Scenebuilder из-за свободы, которую он дает при создании графического интерфейса. У меня проблемы с привязкой данных к экрану. Кажется, объекты, которые я вызываю, либо перестают существовать, либо не являются теми, которые мне нужны.
Я использую базу данных SQLite для своих данных, и это, кажется, работает нормально. Я использую Maven для импорта нужных мне вещей, это также, кажется, работает нормально, однако для этого нужно, чтобы я использовал
public class DdAppLauncher {
public static void main(String[] args) {
DdApp2.main(args);
}
}
в ->
public class DdApp2 extends Application {
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("/fxml/mainWindow.fxml"));
stage.setTitle("Deathtrap Dungeon");
stage.setScene(new Scene (root, 800,600));
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
. содержит кнопку запуска, которая обрабатывается следующим контроллером.
public class MainController {
LocationsPool loc;
Location currentLocation;
@FXML
private ListView<String> inventory;
@FXML
private Text locationDescription;
@FXML
private Text descrA;
@FXML
private Text descrB;
@FXML
private Text descrC;
@FXML
private Text descrD;
@FXML
private Text descrE;
@FXML
private Text descrF;
@FXML
public void startButtonClicked(ActionEvent event){
try {
System.out.println("Starting game");
Stage stage = (Stage) ((Node)event.getSource()).getScene().getWindow();
// Swap screen
Parent root = FXMLLoader.load(getClass().getResource("/fxml/gameWindow.fxml"));
stage.setScene(new Scene(root,800,600));
} catch (IOException e) {
e.printStackTrace();
}
//Setup
loc = new LocationsPool();
currentLocation = loc.getLocation(1);
System.out.println(currentLocation.getDescription());
locationDescription = new Text(currentLocation.getDescription());
System.out.println(locationDescription.getText());
System.out.println(locationDescription);
}
@FXML
public void handleButtonA(){
System.out.println(currentLocation==null);
}
}
Вывод на консоль -> запуск игры
Шум ... (работает)
Шум... (работает)
При нажатии кнопки ->
True
Так что, кажется, приложение «забывает» поля при запуске? или это контроллер, который останавливает существующее и переделывается?
Кроме того, при попытке привязать данные к полям с помощью fx: id, кажется, что эти поля не связываются ни с чем, пока я не нажму эту кнопку.
Я все неправильно структурирую? Что я не получаю? Конечный продукт должен иметь загруженное описание и все варианты, загруженные для этого местоположения. Затем по выбору следует загрузить новое местоположение и новые варианты выбора, поэтому текст необходимо обновить.
Заранее спасибо. Кев