不知道如何将变量分配给我的接口对象
Don't know how to assign variable to my interface objects
我已经完成了一个与命令提示符一起使用的软件,但我想让它更容易与界面一起使用,所以我正在尝试制作一个 javafx 程序。我已经完成了界面,我可以 运行 它但我不知道如何开始将我的对象(组合框、按钮、文本字段...)分配给变量。
有人可以帮我吗?
我的界面是用 Scene builder 完成的。
这是我的主要 class :
package ch.makery.adress;
import java.io.IOException;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.Parent;
public class MainApp extends Application {
@Override
public void start(Stage stage) throws Exception {
Parent parent = FXMLLoader.load(getClass().getResource("PersonOverview.fxml"));
Scene scene = new Scene(parent);
stage.setTitle("Appication Extraction dar et remplissage Excel");
stage.setScene(scene);
stage.show();
}
}
这是我的控制器 class 显然不对。我正在尝试使组合框工作,但我在 Scene Builder 中找不到该变量:
package ch.makery.adress;
import javafx.fxml.Initializable;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Label;
public class HexaController implements Initializable {
@FXML
private ComboBox<String> hexa;
ObservableList<String> list = FXCollections.observableArrayList();
@FXML
private void parcourir(ActionEvent event){
}
@FXML
private ComboBox<Integer>methode;
private MainApp MainApp;
public HexaController(){
}
public void initialize(URL url, ResourceBundle rb){
list.add(new String("OUI"));
list.add(new String("NON"));
hexa.setItems(list);
}
}
我不知道遗漏了什么或做错了什么。
谢谢
编辑
我可以在 Scene Builder 中访问我的变量,因此我可以访问我的 ComboBox 列表。
现在我必须找到一种方法来 select 单击按钮时的文件,并将其路径写在 TextField 上(不知道这是否是最好的方法,但我必须打开一个将被复制的文件)。我还必须找到一种方法来访问我的主应用程序中的用户选择。
您必须创建一个控制器。在 SceneBuilder 中创建控制器后,您可以通过在左侧单击控制器菜单并指定控制器来将控制器分配给您的 fxml class。
在您的控制器 class 本身中,您将使用 @FXML 前缀声明您的变量。关于如何在控制器中声明 ComboBox 的示例:
import javafx.fxml.FXML;
public class MyPageController
{
@FXML
private ComboBox _myComboBox;
}
保存后,您可以返回 SceneBuilder,select 您的 ComboBox 并在右侧单击 "Code",您将能够指定元素的 fx:id
编辑
您编辑了显示代码的问题,因此我的部分回答不再有意义
我已经完成了一个与命令提示符一起使用的软件,但我想让它更容易与界面一起使用,所以我正在尝试制作一个 javafx 程序。我已经完成了界面,我可以 运行 它但我不知道如何开始将我的对象(组合框、按钮、文本字段...)分配给变量。 有人可以帮我吗? 我的界面是用 Scene builder 完成的。 这是我的主要 class :
package ch.makery.adress;
import java.io.IOException;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.Parent;
public class MainApp extends Application {
@Override
public void start(Stage stage) throws Exception {
Parent parent = FXMLLoader.load(getClass().getResource("PersonOverview.fxml"));
Scene scene = new Scene(parent);
stage.setTitle("Appication Extraction dar et remplissage Excel");
stage.setScene(scene);
stage.show();
}
}
这是我的控制器 class 显然不对。我正在尝试使组合框工作,但我在 Scene Builder 中找不到该变量:
package ch.makery.adress;
import javafx.fxml.Initializable;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Label;
public class HexaController implements Initializable {
@FXML
private ComboBox<String> hexa;
ObservableList<String> list = FXCollections.observableArrayList();
@FXML
private void parcourir(ActionEvent event){
}
@FXML
private ComboBox<Integer>methode;
private MainApp MainApp;
public HexaController(){
}
public void initialize(URL url, ResourceBundle rb){
list.add(new String("OUI"));
list.add(new String("NON"));
hexa.setItems(list);
}
}
我不知道遗漏了什么或做错了什么。
谢谢
编辑 我可以在 Scene Builder 中访问我的变量,因此我可以访问我的 ComboBox 列表。 现在我必须找到一种方法来 select 单击按钮时的文件,并将其路径写在 TextField 上(不知道这是否是最好的方法,但我必须打开一个将被复制的文件)。我还必须找到一种方法来访问我的主应用程序中的用户选择。
您必须创建一个控制器。在 SceneBuilder 中创建控制器后,您可以通过在左侧单击控制器菜单并指定控制器来将控制器分配给您的 fxml class。
在您的控制器 class 本身中,您将使用 @FXML 前缀声明您的变量。关于如何在控制器中声明 ComboBox 的示例:
import javafx.fxml.FXML;
public class MyPageController
{
@FXML
private ComboBox _myComboBox;
}
保存后,您可以返回 SceneBuilder,select 您的 ComboBox 并在右侧单击 "Code",您将能够指定元素的 fx:id
编辑
您编辑了显示代码的问题,因此我的部分回答不再有意义