Здравствуйте, что-то совсем запутался с fxml. У меня есть два Java-класса. Один из них, InterfaceClass, подгружает файл и создает из него узел и сцену. Второй класс - ControllerClass, в отдельном файле, содержит объявления,
@FXML TextField ipField, portField, nameField;
@FXML Label infoLabel;
@FXML Button loginButton, exitButton;
метод initialize и ActionListener у одной из кнопок. В соответствующем поле fxml файла следующее:
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="250.0" prefWidth="500.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="guiPck.ControllerClass">
Короче говоря, вроде бы всё правильно прописано. Между собой классы вообще ничем не связываются, выходит? Компилятор даже отказывался компилировать ControllerClass, пока я его импортом к InterfaceClass не привязал.
При компиляции выдает исключение:
Trouble viewing fxml file:javafx.fxml.LoadException: /D:/%d0%ba%d0%be%d0%b4/java/REALSHIT/MyChatGui/bin/guiPck/guiLogin.fxml
Однако если подключить в fxml не ControllerClass, а InterfaceClass, он показывает нарисованное окошко. Очевидно, что в этом случае никакие кнопки не реагируют.
Возможно, нужно класс ControllerClass прямо внутри InterfaceClass писать? Форму строил SceneBuilder-ом, но контроллер прописывал вручную.
InterfaceClass:
package guiPck;
import javafx.stage.*;
import javafx.scene.*;
import javafx.scene.layout.*;
import javafx.scene.control.*;
import javafx.fxml.*;
import javafx.application.*;
import javafx.event.*;
import javafx.geometry.*;
import java.net.URL;
import java.util.ResourceBundle;
import clientPck.Client;
import guiPck.ControllerClass;
public class InterfaceClass extends Application {
public static void main(String[] args){
Application.launch(InterfaceClass.class, (java.lang.String[])null);
}
public void start (Stage loginStage){
try {
AnchorPane loginNode = (AnchorPane)FXMLLoader.load(InterfaceClass.class.getResource("guiLogin.fxml"));
Scene loginScene = new Scene(loginNode);
loginStage.setTitle("Login");
loginStage.setScene(loginScene);
loginStage.show();
} catch (Exception ex){
System.out.println("Trouble viewing fxml file:"+ex);
System.exit(-1);
}
}//end of start method
}//end of InterfaceClass
ControllerClass:
package guiPck;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.*;
import javafx.scene.control.*;
public class ControllerClass implements Initializable{
@FXML TextField ipField, portField, nameField;
@FXML Label infoLabel;
@FXML Button loginButton, exitButton;
public void initialize(URL fxmlFileLocation, ResourceBundle resources){
System.out.println("HI");
exitButton.setOnAction((e)-> {
infoLabel.setText("he");
});
}
}
И fxml файл:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.text.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<?import java.net.*?>
<?import javafx.geometry.*?>
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="250.0" prefWidth="500.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="guiPck.ControllerClass">
<children>
<TextField id="ipField" alignment="CENTER" layoutX="171.0" layoutY="69.0" prefHeight="25.0" prefWidth="158.0" />
<TextField id="portField" alignment="CENTER" layoutX="171.0" layoutY="100.0" prefHeight="25.0" prefWidth="158.0" text="4444" />
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="68.0" layoutY="69.0" prefHeight="25.0" prefWidth="80.0" text="Server IP">
<font>
<Font size="16.0" />
</font>
</Label>
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="68.0" layoutY="100.0" prefHeight="25.0" prefWidth="80.0" text="Port">
<font>
<Font size="16.0" />
</font>
</Label>
<TextField id="nameField" alignment="CENTER" layoutX="171.0" layoutY="133.0" prefHeight="25.0" prefWidth="158.0" />
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="68.0" layoutY="133.0" prefHeight="25.0" prefWidth="80.0" text="Name">
<font>
<Font size="16.0" />
</font>
</Label>
<Button id="loginButton" layoutX="122.0" layoutY="204.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="99.0" text="Login" />
<Button id="exitButton" layoutX="280.0" layoutY="204.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="99.0" text="Exit" />
<Label id="infoLabel" alignment="CENTER" contentDisplay="CENTER" layoutX="131.0" layoutY="174.0" prefHeight="17.0" prefWidth="239.0" text="complete the form and press login" />
</children>
</AnchorPane>
Виртуальный выделенный сервер (VDS) становится отличным выбором
У меня при подгрузке данных с rss во время ожидания выводится текст который прописан в stringsМожно ли составить список фраз которые будут выводится...
У меня одно активити и несколько фрагментов, у всех фрагментах тот же тулбар что и в активвитиКак поменять ?