0
我想使用网格窗格创建单独的场景。我试图基本上复制所有的代码并创建一个新的场景,但是我放在第二个场景中的所有内容都不会捕捉到网格。我相当新编码,这是我的第五个项目。 (对不起的代码抱歉)在2个不同场景中的一个类中获取2个GridPanel
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
public class Main extends Application {
Stage window;
Scene s1, s2;
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
window = primaryStage;
window.setTitle("Test");
GridPane grid = new GridPane();
grid.setPadding(new Insets(10, 10, 10, 10));
grid.setVgap(10);
grid.setHgap(10);
Button b1 = new Button("Scene 2");
b1.setOnAction(e -> window.setScene(s2));
GridPane.setConstraints(b1, 2, 0);
Button b2 = new Button("Button 2");
GridPane.setConstraints(b2, 5, 0);
grid.getChildren().addAll(b1, b2);
Scene s1 = new Scene(grid, 500, 500);
GridPane grid2 = new GridPane();
grid.setPadding(new Insets(10, 10, 10, 10));
grid.setVgap(10);
grid.setHgap(10);
Button b3 = new Button("Scene 1");
b3.setOnAction(e -> window.setScene(s1));
GridPane.setConstraints(b3, 0, 0);
Button b4 = new Button("Button 2");
GridPane.setConstraints(b4, 6, 0);
grid2.getChildren().addAll(b3, b4);
s2 = new Scene(grid2, 500, 500);
window.setScene(s1);
window.show();
}
}
你只是有一个明显的复制和粘贴错误:您没有设置填充,hgap指定,或vgap上'grid2'。 –
你是什么意思'不对齐电网'?我已经运行你的代码,它的工作正常,除了在场景2中,它不显示适当的间距。那是因为,正如詹姆斯所说,你没有为grid2设置vgap和hgap。 –
非常感谢你@James_D我没有意识到grid.setPadding等必须标注为grid2。我只是认为它是通用的。 – CraftMaster100