javafx переносит текст с метки на экраны - PullRequest
0 голосов
/ 10 июня 2018

Я искал и уверен, что у других тоже есть эта проблема.Многие посты остаются без ответа или за них проголосовали, и никакого решения не дано, даже для моего собственного поста.Я хотел знать, как я могу передавать данные меток между классами.Например, скажем, у меня есть следующее:

Первый класс:

Label lab;
public void setText() {
   lab.setText("hello");
}
public String getText() {
   return lab.getText();
}
public void switchScene(ActionEvent event) throws IOException {
//code to switch scenes when button pressed
setText(); //this is also called when button pressed

}

Средний класс:

public void switchScenes(ActionEvent event) throws IOException {
    FirstScreenController p = new FirstScreenController();
    n.displayAmt(p.getText()); //get text from first scene's label
}

Целевой класс:

Label otherLab;
public void displayAmt(String amt) {
    otherLab.setText(amt); //set text from first scene's label to this label
}

Предположим, что метод среднего класса установлен на кнопку.После нажатия кнопки все работает нормально, так как программа переключает сцены.Однако otherLab в классе Target пуст.Текст с метки в первом классе был неудачно перенесен на метку в целевом классе.

Как можно исправить это?Я знаю, что java передается по значению, поэтому первая метка не будет содержать изменений, внесенных функцией.Что можно сделать, чтобы преодолеть это?

Ответы [ 2 ]

0 голосов
/ 10 июня 2018

Как и предполагал первый ответ, вы создаете новый объект, и поэтому метод getText вернет значение null;Вы можете использовать классы writer и reader пакета java.io.Получаемый текст может включать в себя код для сохранения текста в файле с помощью средства записи, и целевой класс может читать из этого файла через устройство чтения.Это не должно быть дорогой процедурой.

Хорошая ссылка для io: https://www.tutorialspoint.com/java/io/index.htm Если это был jsp, вы можете получить параметры, но эти значения - время выполнения, и вам нужно их сохранить.Сериализация также вариант.

0 голосов
/ 10 июня 2018

С помощью следующей строки при каждом переключении сцены вы создаете новый объект контроллера с пустой меткой, поэтому getText в среднем классе возвращает пустую строку.

FirstScreenController p = new FirstScreenController();

Зачем вам нужентекст метки?Это не пользовательский ввод или что-то в этом роде, метка - это просто метка, фиксированный текст, если вам нужна метка на втором экране, создайте новую. Если у вас вопрос: как распределить параметры между сценами, это зависит от случаяк примеру, вы можете читать из файла или чего-то в этом роде, но если вы пытаетесь это сделать, ваш вопрос заключается в том, как обмениваться информацией между классами, а не о javafx.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...