Ниже приведен пример передачи параметров в документ fxml через пространство имен.
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.VBox?>
<VBox xmlns="http://javafx.com/javafx/null" xmlns:fx="http://javafx.com/fxml/1">
<BorderPane>
<center>
<Label text="$labelText"/>
</center>
</BorderPane>
</VBox>
Определить значение External Text
для переменной пространства имен labelText
:
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
import java.io.IOException;
public class NamespaceParameterExampleApplication extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws IOException {
final FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("namespace-parameter-example.fxml"));
fxmlLoader.getNamespace()
.put("labelText", "External Text");
final Parent root = fxmlLoader.load();
primaryStage.setTitle("Namespace Parameter Example");
primaryStage.setScene(new Scene(root, 400, 400));
primaryStage.show();
}
}
Когда вы from random import *
, все определения из random
становятся частью текущего пространства имен. Это означает, что вам не нужно приписывать что-либо с помощью random.
, но это также означает, что вы можете получить столкновение имен, даже не зная его.
Предпочтительным способом является import random
.
Если вы используете 'from moduleName import ....', вы получаете все классы, функции и переменные, которые вы указали после импорта или всего, если вы указали *: из произвольного импорта * для i в диапазоне (15): print randrange (3,13,3)
Но обратите внимание, что это не очень хорошо, чтобы импортировать все, было бы лучше импортировать только необходимые классы, функции и переменные, поэтому, если вам нужно только randrange, вам нужно use:
from random import randrange
for i in range(15):
print randrange(3,13,3)
Если вы используете случайный импорт, это означает, что вы импортируете модуль, поэтому вам нужно указать moduleName. когда вы хотите использовать его так:
import random
for i in range(15):
print random.randrange(3,13,3)
Импортирование всего из модуля не рекомендуется только из-за этих удивительных побочных эффектов: модуль random
содержит функцию случайным образом, поэтому import * from random
выполняет следующие действия:
from random import randrange
from random import random
...
Теперь, когда вы обращаетесь к random
, вы получаете доступ к функции вместо модуля . Вы можете использовать randrange
(без префикса random.
), но import random
и явным образом указывая, из какого модуля есть функция, является лучшей идеей.
from random import *
импортирует все функции из модуля, называемого случайным, но не random
.
Здесь вы можете напрямую вызвать функции случайным образом следующим образом: randrange(3,13,3)
и т. д.
import random
импортирует имя случайное, из которого вы можете позже вызывать функции следующим образом: random.randrange(3,13,3)
и т. д.