说到编程或java,我只是一个完全的初学者。所以一开始,我的计划是使用JavaFX(结合场景构建器)创建一个窗口,在那里我有一个按钮,可以引导我进入另一个窗口,在那里我有一个组合框。我谷歌了几个小时,想找到一种方法来填充组合框,但我找到的所有解决方案都不适合我。这就是为什么我认为我在这里犯了一些错误,我希望你能以某种方式帮助我。或者在列表中给我一个提示,我应该学习/阅读什么才能自己找到解决方案。首先,这是我构建第一阶段的main.java代码。
主要.java:
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
try {
Parent root= FXMLLoader.load(getClass().getResource("Scene-Hauptmenu.fxml"));
primaryStage.setTitle("Fishbase");
primaryStage.sizeToScene();
primaryStage.setResizable(false);
primaryStage.setScene(new Scene(root));
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
在我的“场景-Hauptmenu.fxml”中,重要的是将我带到第二个窗口的按钮:
Scene-Hauptmenu.fxml:
<Button id="btn_gefangen" fx:id="btn_gefangen" mnemonicParsing="false" onAction="#gefangen" text="Ich habe Fische gefangen!" GridPane.rowIndex="1" />
到目前为止一切正常,我可以毫无问题地切换到我的第二个窗口。但我认为我的主要问题在于我的控制器类,所以这里。
MyController.java:
public class MyController implements Initializable{
private Node node;
private Stage stage;
private Scene scene;
private FXMLLoader fxmlLoader;
private Parent root;
@FXML
private Button btn_gefangen;
@FXML
private ComboBox<String> chobo_fisch;
@FXML
private Button btn_gefangen_zurueck;
@Override
public void initialize(URL location, ResourceBundle resources) {
}
public void gefangen(ActionEvent event) throws IOException{
node = (Node) event.getSource();
stage = (Stage) node.getScene().getWindow();
scene = stage.getScene();
fxmlLoader = new FXMLLoader (getClass().getResource("gefangen.fxml"));
root = (Parent) fxmlLoader.load();
scene.setRoot(root);
stage.sizeToScene();
stage.setTitle("Fische eintragen");
}
public void gefangen_zurueck(ActionEvent event) throws IOException{
node = (Node) event.getSource();
stage = (Stage) node.getScene().getWindow();
scene = stage.getScene();
fxmlLoader = new FXMLLoader (getClass().getResource("Scene-Hauptmenu.fxml"));
root = (Parent) fxmlLoader.load();
scene.setRoot(root);
stage.sizeToScene();
stage.setTitle("Fishbase");
}
}
因此,“btn_gefangen”按钮将我带到另一个窗口,在那里我确实有带有fx:id“chobo_fisch”的组合框。
gefangen.fxml:
<ComboBox fx:id="chobo_Fisch" prefWidth="150.0"/>
所以我用谷歌搜索了几个小时,但我仍然没有找到任何解决方案来填充组合框,其中包含适用于我的代码的选项。我做错了什么?任何人都可以在这里帮助我吗?
此致敬意
詹尼克
试试这个:
ObservableList<String> items = FXCollections.observableArrayList();
items.add("a");
items.add("b");
chobo_fisch.getItems().addAll(items);
我对这些东西还不熟悉,但我认为这就是它应该看起来的样子,如果我明白你想要什么的话,至少也应该如此。示例如下:
< code >组合框
注:我是stackoverflow的新手。
我发现了三种变体,具体取决于您的设置:
// Weekdays
String week_days[] =
{ "Monday", "Tuesday", "Wednesday",
"Thrusday", "Friday" };
// Create a combo box
ComboBox combo_box = new ComboBox(FXCollections.observableArrayList(week_days));
(来源:https://www.geeksforgeeks.org/javafx-combobox-with-examples/)
final ComboBox emailComboBox = new ComboBox();
emailComboBox.getItems().addAll(
"jacob.smith@example.com",
"isabella.johnson@example.com",
"ethan.williams@example.com",
"emma.jones@example.com",
"michael.brown@example.com"
);
来源:(https://docs.oracle.com/javafx/2/ui_controls/combo-box.htm)
<ComboBox fx:id="someName">
<items>
<FXCollections fx:factory="observableArrayList">
<String fx:value="1"/>
<String fx:value="2"/>
<String fx:value="3"/>
<String fx:value="4"/>
</FXCollections>
</items>
<value>
<String fx:value="1"/>
</value>
</ComboBox>
编辑
正如fabian所提到的,您应该确保包括FXML导入:
<?import javafx.collections.FXCollections?>
<?import java.lang.String?>
第二个可能就不需要了
我正在创建一个影院系统,用户可以通过主页中的组合框选择电影。我在FilmController类中创建了一个数组列表,然后将其转换为observableList,并且正在努力将其内容填充到combobox(HomepageController)中。 这是arraylist的FilmController 我尝试在HomepageController中实现此功能,但它似乎给了我一个错误: 我已经研究过这
我想在一个组合框中填充一些数据。这很好。但是,我想动态地改变组合框中的数据。 目前我有一个表,在组合框中,我在表列中显示数据的唯一值。现在,表数据存储在静态可观察列表变量中。我想根据表中显示的数据更改组合框中的数据。也就是说,如果存储表数据的静态可观察列表发生更改,我希望在没有手动干预的情况下更改组合框数据。 如果没有单独的静态变量用于组合框,这是否可能?
问题内容: 我想使用css在html中的选择选项之间添加某种空间(填充,边距或其他)。我已经尝试使用类似的东西: 但是没有用。我已经读过,这是可以做到的,但在IE中不起作用。无论如何,即使它无法在IE中运行,我也希望它可以在其他浏览器中运行。 PS:当前正在使用Chrome 问题答案: 选择选项的样式非常有限,因为要在操作系统中的所有应用程序之间保持一致性和一致性,因此浏览器应限制某些基本元素的样
问题内容: 我是Android的新手,我想尝试做一些非常基础的事情:Array中有5个字符串(例如’One’,’Two’…)。我想将这5个字符串添加到listactivity的列表视图中。 我的清单: 我的清单行: 基本上,我想将Array项绑定到TextView homeItemName。稍后我可能会在行中添加其他项,因此不能将listview绑定到条目。 谢谢! 问题答案: 对于代码,请快速浏
本文向大家介绍jQGrid动态填充select下拉框的选项值(动态填充),包括了jQGrid动态填充select下拉框的选项值(动态填充)的使用技巧和注意事项,需要的朋友参考一下 本文给大家分享一段代码关于技巧jqgrid动态填充select 下拉框的选项值,非常不多说了,直接给大家贴代码了,具体代码如下所示: 注意:要return以及async:false否则没有效果 在colModel:中设置
我正在查询Sql Server并返回一个List-我想使用此List作为我的组合框的源。下面是我正在使用的代码,它运行时没有错误,但我的组合框始终为空并且从不填充。这里有什么不正确的? 主要的Java语言 样品fxml