在我的javafx
项目中,我有一个包含多个值的ComboBox。当我的应用程序开始时,我执行以下操作:
gui.course_P = new ComboBox<String>();
for (int i = 1; i < gui.columns.size(); i++) {
gui.course_P.getItems().add(gui.columns.get(i));
}
gui.createTestButtonPane.add(gui.course_P, 2, 1);
其中gui.columns
是字符串列表。
同时,在应用程序中,可以更改此值。但是,由于我已经将此组合框添加到我的GridPane中,然后在该值更改(gui.columns)时添加到场景中,因此新值没有显示在组合框中。因为我已经添加了旧的gui.course。有没有办法用新的gui.course_P更新createTestButtonPane?
编辑:我尝试做的是在侦听器上添加comboBox上的值,然后再次将其添加到gridPane:
String temp1 = course_name.getText();
gui.course_P = new ComboBox<String>();
gui.course_P.getItems().add(temp1);
//gui.createTestButtonPane.add(gui.course_P, 2, 1);
该课程已正确添加到comboBox,但当我再次将combobox添加到gridpane时,结果是两个comboBox。我想要的只是将gui.course更新到我的gridPane。
编辑2:我按照我的代码的答案帖子的例子。
//gui.course_P = new ComboBox<>(gui.columns);
gui.course_P = new ComboBox<String>();
for (int i = 1; i < gui.columns.size(); i++) {
gui.course_P.getItems().add(gui.columns.get(i));
}
问题是我想要列表中的所有东西,除了第一个元素。当我使用< code>gui.course_P = new ComboBox时
这对我来说很好。每当按下该按钮时,都会将新项目添加到组合框中
。我刚刚使用了一个可观察列表
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ComboBox;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;
public class ComboBoxTest extends Application {
private ObservableList<String> source = FXCollections.observableArrayList();
@Override
public void start(Stage primaryStage) {
Pane root = createPane();
primaryStage.setScene(new Scene(root));
primaryStage.show();
}
private Pane createPane() {
GridPane pane = new GridPane();
Button addButton = new Button("add new item");
addButton.setPrefWidth(150);
addButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
source.add("Item" + source.size()); // editing the source
}
});
ComboBox<String> comboBox = new ComboBox<>(source);
pane.add(addButton, 1, 0);
pane.add(comboBox, 1, 1);
pane.setPrefHeight(200);
pane.setPrefWidth(200);
return pane;
}
public static void main(String[] args) {
launch(args);
}
}
0-初始状态:
1-按下按钮:
2-按钮再次按下:
每秒钟我都会创建一个新的圆,并将其添加到名为“形状”的圆阵列列表中。我需要他们将其添加到MyPane,以便在javafx窗口中显示 然而我得到了这个错误。 线程“Timer-0”java中出现异常。lang.IllegalStateException:不在FX应用程序线程上;currentThread=Timer-0 我曾尝试使用其他计时方法,如ScheduledExecutorService,但
我无法在SceneBuilder(eclipse)中使用GridPane,当我尝试在项目中插入GridPane时,SceneBuilder会在没有提示任何消息的情况下退出。 这就是我在日志文件中找到的:
我在fxml中有一个GridPane,它有一个文本标题和4个按钮。GridPane本身是居中对齐的,但所有按钮都在网格的列内左对齐。我知道如何使用Java代码更改项目的对齐方式,但这不是理想的情况,因为我希望所有样式都使用FXML和CSS处理。有谁能建议在JavaFX的GridPane视图中居中对齐单元格元素的最佳方法吗?
我试图将乘法VBox添加到scrollpane中的gridpane(在下面的codesnippet中称为refPane)。 它在一行中添加不超过ITEMS_PER_ROW的Vbox,并在下一行中继续。也不应该有更多的行,然后ITEMS_PER_COLUM可见。问题是,如果我添加更多的ITEMS_PER_ROW*ITEMS_PER_COLUMN到网格中,而不是obingbeingscrollable
我想这可能是图像后的行和列的问题,但是我已经尝试了一些方法,但没有成功。非常感谢任何帮助。谢谢
问题内容: 我正在寻找某种有关组织应用程序的建议。 当您拥有包含内容选择的主菜单时,请按一个按钮,则获取控制器有两个选择:a)更改当前显示主菜单的内容b)创建一个新场景并将舞台切换到该场景一 你在用什么 有什么最佳实践吗? 目前,我更喜欢a),因为我可以保持事物链接状态栏等,但这是“干净”的方式吗? 问题答案: 首先,需要考虑一些事情: 1)更改场景将取消链接到您附加到该事件处理程序的链接,并且可