JavaFX - Использовать элементы одного класса в другом классе?
JavaFX. Мне было нужно, чтобы при нажатии на Button у меня в ListView появлялся новый элемент.
Проблема.
Кнопка и Список принадлежат разным сценами и находятся, соотв., в разных классах. Вся саламандра происходит в специальном JavaFX методе initialize(), который ломает всё и вся (прога не запускается), когда я создаю в нём экземпляр класса, из которого я хочу использовать кнопку, и использую эту кнопку в классе со списком. - Краш.
Проблемное место я указал.
Класс с первой сценой, на которой есть `ListView`
package sample;
import javafx.fxml.FXML;
import javafx.scene.control.*;
import javafx.util.Duration;
public class ScenePrimary
{
@FXML
public Button plusButton;
@FXML
public ListView<String> characterList;
@FXML
public TextField nameField;
@FXML
public TextField surnameField;
@FXML
public TextField nationalityField;
public void initialize()
{
Tooltip plusButtonTooltip = new Tooltip("New character");
plusButtonTooltip.setShowDelay(Duration.ZERO);
plusButton.setTooltip(plusButtonTooltip);
plusButton.setOnAction(e -> {
Main.stageSecondary.show();
});
SceneSecondary SS = new SceneSecondary(); // вот здесь
SS.nextPageButton1.setOnAction(e -> { //
characterList.getItems().add("test_item"); //
}); //
}
}
Класс со второй сценой, на которой есть `Button`
package sample;
import javafx.fxml.FXML;
import javafx.scene.control.*;
public class SceneSecondary
{
@FXML
public RadioButton maleRadioButton;
@FXML
public RadioButton femaleRadioButton;
@FXML
public RadioButton nonBinaryRadioButton;
@FXML
public Button nextPageButton1;
@FXML
public Button clearButton;
@FXML
public TextField creatorNameField;
@FXML
public TextField creatorSurnameField;
@FXML
public ChoiceBox<String> nationalityChoiceBox;
@FXML
public Spinner<Integer> ageCounter;
public void clearButtonAction()
{
ageCounter.setValueFactory(new SpinnerValueFactory.IntegerSpinnerValueFactory(0,100,0));
creatorNameField.setText("");
creatorSurnameField.setText("");
nationalityChoiceBox.setValue("indefinite");
femaleRadioButton.setSelected(false);
maleRadioButton.setSelected(false);
nonBinaryRadioButton.setSelected(false);
}
public void initialize()
{
maleRadioButton.setOnAction(e -> {femaleRadioButton.setSelected(false); nonBinaryRadioButton.setSelected(false);});
femaleRadioButton.setOnAction(e -> {maleRadioButton.setSelected(false); nonBinaryRadioButton.setSelected(false);});
nonBinaryRadioButton.setOnAction(e -> {maleRadioButton.setSelected(false); femaleRadioButton.setSelected(false);});
nationalityChoiceBox.getItems().addAll("indefinite","English","American","Mexican","Brazilian","Spanish","Italian","Turkish","Polish","Russian","Chinese","Japanese");
nationalityChoiceBox.setValue("indefinite");
ageCounter.setValueFactory(new SpinnerValueFactory.IntegerSpinnerValueFactory(0,100,0));
ageCounter.setEditable(true);
clearButton.setOnAction(e -> {
clearButtonAction();
});
nextPageButton1.setOnAction(e ->
{
Main.stageSecondary.close();
Main.stageThirdary.show();
});
}
}
Полный проект с 4 классами я залил на Яндекс диск - посмотрите, пожалуйста
https://yadi.sk/d/S248vwsrYnX8Bw
Спасибо за помощь заранее