JavaFx с создателем сцены: невозможно переключить сцену [дубликат]

Вот 3 лучших способа сделать это.

Метод первый:

$x = '+3';
echo "1+2$x";

Double Quotes (") позволяет вам просто передать переменная непосредственно внутри нее.

Метод второй:

$x = '+3';
echo '1+2'.$x;

Если вы не хотите использовать двойные кавычки по какой-либо причине, пойдите с этим. (.) просто означает «Добавить» в основном. Поэтому, если вам нужно добавить что-то вроде 1 + 2 + 3 + 4 + 5 и иметь переменную в середине, вам нужно всего лишь:

$x = '+3';
echo '1+2'.$x.'+4+5';

Способ 3: (добавление переменной непосредственно внутри вызываемой переменной)

$x = '+3';
$y = '+4';
$z = '+5';
echo "1+2${"x".$y.$z}";
Output: 1+2+3+4+5

Здесь мы добавляем $y и $z к $x, используя "."; {} приоритизирует работу внутри него перед рендерингом неопределенной переменной.

Это лично очень полезная функция для вызова таких функций, как:

//Add the Get request to a variable.
$x = $_GET['tool'];

//Edit: If you want this if to contain multiple $xresult's change the if's
//Conditon in the "()" to isset($get). Simple. Now just add $xresultprogram
//or whatever.
if($x == 'app') {
    $xresultapp = 'User requested tool: App';
}

//Somewhere down far in HTML maybe...

echo ${"xresult".$x};
//Note: doing ${"xresult".$_GET['tool']} directly wont work.
//I believe this is because since some direct non-echo html was loaded
//before we got to this php section it cant load cause it has already
//Started loading client side HTML and JS.

выведет файл $ xresultapp, User request tool: App, если они сделали example.com?tool=app. Вы можете изменить с помощью инструкции else, чтобы определить, что происходит, когда что-то запрашивает d другой, тогда запрашивается приложение e.t.c. Помните, что все чувствительно к регистру, поэтому, если они запрашивают приложение в столицах, он не будет выводить $ xresultapp.

3
задан Sam S. 18 January 2016 в 21:31
поделиться

1 ответ

Вы можете получить ссылку на Scene и Window из ссылки на вашу кнопку. Оттуда вам решать, как вы хотите показать новое представление.

Вот как вы получаете эти ссылки:

Scene scene = btnSignIn.getScene();
Window window = scene.getWindow();
Stage stage = (Stage) window;

Вы можете изменить представление, изменив корень вашей сцены:

FXMLLoader loader = ... // create and load() view
btnSignIn.getScene().setRoot(loader.getRoot());

Или вы можете изменить всю сцену:

FXMLLoader loader = ... // create and load() view
Stage stage = (Stage) btnSignIn.getScene().getWindow();
Scene scene = new Scene(loader.getRoot());
stage.setScene(scene);
3
ответ дан Cypher 16 August 2018 в 11:26
поделиться
Другие вопросы по тегам:

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